Webforms HttpContext.Current.User.Identity.IsAuthenticated总是

本文关键字:IsAuthenticated 总是 Identity User HttpContext Current Webforms | 更新日期: 2023-09-27 18:05:38

EDIT:谁能解释为什么我的用户名是"/" ?请看下面我的"答案"

我在VS2013中创建了一个新的WebForms应用程序。NET 4.51),它包含了"新的"身份成员提供程序。我想使用旧的会员提供程序,所以做了如下操作。

  1. 在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中的新应用程序模板生成的新应用程序的默认值。

Webforms HttpContext.Current.User.Identity.IsAuthenticated总是

我今天回到这个问题,现在页面正在按预期进行身份验证(WT....)。所以我猜一定有一块饼干没有被清理掉。但还是有些地方不对劲

当我检查用户身份验证时:

System.Web.HttpContext.Current.User.Identity.Name

我得到了:

"/"

作为结果,而不是用户登录时输入的名称:

Membership.ValidateUser(txtUserName.Text, txtPassword.Text)

ie。为什么我没有得到txtUserName的值。文本代替/

我想一个相关的问题是,是否有一个HOWTO关于如何从身份恢复到以前的会员系统的项目?