2

所以,我的应用程序很奇怪,当您登录时,您将保持登录状态一两个页面然后迷路。我的设置是这样的:

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

谢谢你的帮助。

4

2 回答 2

3

这里有两件事对我来说很突出。首先是您允许 * 用户而不是 ? 用户。* 表示匿名,? 表示经过身份验证。我会将其更改为以下内容并查看是否有帮助...

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

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

<forms name=".ASPXFORMSAUTH" timeout="20" slidingExpiration="true" />
于 2009-02-03T19:29:52.277 回答
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 设置将无法按预期工作。

于 2009-02-03T19:37:00.687 回答