2014-02-24 35 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 });