English 中文(简体)
ASP.NET 成员资格保持身份验证问题
原标题:
  • 时间:2009-02-03 18:29:44
  •  标签:

所以,我的应用程序表现出奇怪的行为,当您登录后,您将会保持登录状态,但在浏览一页或两页之后就会丢失。我的设置如下:

 <authentication mode="Forms">    
     <forms name=".ASPXFORMSAUTH"  timeout="20"/>
  </authentication>

 <authorization>
<allow users="*" />
</authorization>
 <membership defaultProvider="MySqlConnection" userIsOnlineTimeWindow="45">
 <providers>
    <clear />
    <add name="MySqlConnection" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MySqlConnection" 
applicationName="HQChannel" 
enablePasswordRetrieval="true" 
enablePasswordReset="true"
requiresQuestionAndAnswer="false" 
requiresUniqueEmail="true" 
passwordFormat="Hashed" 
minRequiredNonalphanumericCharacters="0" 
minRequiredPasswordLength="6" />
 </providers>
 </membership>

谢谢你的帮助。 (Xièxiè nǐ de bāngzhù.)

问题回答

这里有两件事对我很重要。第一,您允许 * 用户而不是?用户。*表示匿名,?表示已验证。我会将其更改为以下内容并查看是否有所帮助...

<authorization>
   <allow users="?" />
   <deny users="*" />
</authorization>

第二个想法是您希望在身份验证块中添加 slidingExpiration="true"。这将使登录成为一个滑动窗口,因此他们只会在20分钟的不活动后注销...

<forms name=".ASPXFORMSAUTH" timeout="20" slidingExpiration="true" />

我也会检查代码,看看是否像下面的示例一样将表单身份验证票据覆盖为不同时间限制。

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket
(
   1, // version
   txtEmail.Text, // name
   DateTime.Now, // issueDate
   DateTime.Now.AddMinutes(30), // expiration
   false, // isPersistent
   roles, // userData
   FormsAuthentication.FormsCookiePath // cookiePath
 );

如果设置被从代码中显式覆盖,则web.config设置将无法按预期工作。





相关问题
热门标签