Webforms HttpContext.Current.User.Identity.IsAuthenticated总是
本文关键字:IsAuthenticated 总是 Identity User HttpContext Current Webforms | 更新日期: 2023-09-27 18:05:38
EDIT:谁能解释为什么我的用户名是"/" ?请看下面我的"答案"
我在VS2013中创建了一个新的WebForms应用程序。NET 4.51),它包含了"新的"身份成员提供程序。我想使用旧的会员提供程序,所以做了如下操作。
- 在web中填充必要的条目。
:
<membership defaultProvider="DefaultMembershipProvider">
<providers><add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
和
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
我重复检查了认证节点:
<authentication mode="Forms">
<forms loginUrl="Account/Login" timeout="120" defaultUrl="/">
</forms>
</authentication>
我的登录码如下:
if (Membership.ValidateUser(txtUserName.Text, txtPassword.Text))
{
FormsAuthentication.RedirectFromLoginPage("/", chkRememberMe.Checked);
}
和我的注销代码:
FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();
然而HttpContext.Current.User.Identity.IsAuthenticated 总是返回TRUE,这意味着即使在我注销之后,我也可以访问站点中的任何页面,即使我有以下限制:
<!-- Entire site is secured -->
<location path=".">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
我在这里错过了什么?我猜仍然有一些遗产从原来的身份提供者,我没有根除,这是导致这个问题。在这一点上,安全性对我来说根本不起作用,我需要在不使用新的身份成员提供程序的情况下让它工作,这是通过VS2013中的新应用程序模板生成的新应用程序的默认值。
我今天回到这个问题,现在页面正在按预期进行身份验证(WT....)。所以我猜一定有一块饼干没有被清理掉。但还是有些地方不对劲
当我检查用户身份验证时:
System.Web.HttpContext.Current.User.Identity.Name
我得到了:
"/"
作为结果,而不是用户登录时输入的名称:
Membership.ValidateUser(txtUserName.Text, txtPassword.Text)
ie。为什么我没有得到txtUserName的值。文本代替/
我想一个相关的问题是,是否有一个HOWTO关于如何从身份恢复到以前的会员系统的项目?