2014-02-24 54 views
0

我已經設置身份驗證cookie下同:永久性Cookie超時自定義時間,它不是persistence

FormsAuthentication.SetAuthCookie(member.UserName,member.RememberMe);

,並在web.config中:

<authentication mode="Forms"> 
    <forms loginUrl="~/Login" timeout="2" slidingExpiration="true"/> 
</authentication> 
時記住的是真的還是假的

,結果是沒有什麼不同,以及用戶後2分鐘註銷。我的問題在哪裏? 感謝

+0

你在超時的web配置=「2」 – Akhlesh

+0

@akhlesh沒有,它不使用的sessionState有它。我在global.asax中有這樣的代碼:「void MvcApplication_PostAuthenticateRequest(object sender,EventArgs e) { System.Web.HttpContext.Current.SetSessionStateBehavior( SessionStateBehavior.Required); }」 – mortazavi

回答

0
FormsAuthentication.SetAuthCookie(member.UserName, member.RememberMe); 

如果member.RememberMe是那麼cookie將到期要麼就超時或當用戶關閉瀏覽器。

if member.RememberMe is true那麼cookie只會在超時時過期(不管它的持久與否)。

但是,如果你想提高持久Cookie超時,那麼你可以這樣做: -

var timeOut = member.RememberMe ? DateTime.Now.AddMinutes(20) : DateTime.Now.AddMinutes(2); 
var fat = new FormsAuthenticationTicket(1, member.UserName, DateTime.Now,timeOut, member.RememberMe, member.UserName); 
string encTicket = FormsAuthentication.Encrypt(fat); 
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { Expires = fat.Expiration });