编辑:任何人都可以解释我为什么会这样做" /"用户名?看我的#34;答案"以下
我在VS2013(.NET 4.51)中创建了一个新的WebForms应用程序,其中包括" new"身份会员提供者。我想使用较旧的成员资格提供程序,如下所示。
:
<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中的新应用程序模板生成的新应用程序的默认设置。
非常感谢所有指针和建议。
答案 0 :(得分:0)
我今天回到这里,现在页面正在按预期进行身份验证(WT ....)。所以我猜测某个地方肯定有一个没有被清除的cookie。然而,事情仍然不对。
用户在检查时进行了身份验证:
System.Web.HttpContext.Current.User.Identity.Name
我得到了:
"/"
作为结果,而不是用户在通过以下方式登录时输入的名称:
Membership.ValidateUser(txtUserName.Text, txtPassword.Text)
即。为什么我没有得到 txtUserName.Text 的值而不是 /
我想一个相关的问题是,有没有关于如何将项目从Identity恢复到以前的会员系统的HOWTO?