2009-02-03 136 views
3

因此,我的應用程序很奇怪,當您登錄時,您將保持登錄一兩頁然後迷路。我的設置是這樣的:ASP.NET Membership保持身份驗證問題

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

感謝您的幫助。

回答

3

2件事情在這裏脫穎而出。首先是你允許*用戶而不是?用戶。 *表示匿名,?意味着認證。我將其更改爲以下&看看是否有幫助?

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

第二個想法是,你會想slidingExpiration =「真正的」添加到您的驗證塊。這會讓登錄到滑動窗口 - 所以他們只得到20分鐘不活動後註銷...

<forms name=".ASPXFORMSAUTH" timeout="20" slidingExpiration="true" /> 
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設置將無法按預期工作。