ASP.NET成员资格保持身份验证问题

时间:2009-02-03 18:29:45

标签: c#-3.0 asp.net-membership asp.net-3.5

所以,我的应用程序很奇怪,当你登录时,你将保持登录一两页然后迷路。我的设置如下:

 <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>

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

这里有两件事让我很突出。首先是你允许*用户而不是?用户。 *表示匿名,?意味着经过验证。我将其更改为以下&amp;看看是否有帮助...

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

第二个想法是你想在你的身份验证块中添加slidingExpiration =“true”。这将使登录进入滑动窗口 - 所以他们只会在20分钟不活动后退出...

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

答案 1 :(得分:1)

我还会检查代码,看看是否正在使用不同的超时覆盖表单身份验证票证,如下面的示例所示。

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设置将无法按预期工作。