【问题标题】:persistent cookie timeout after custom time and it is not persistence自定义时间后的持久 cookie 超时,它不是持久性
【发布时间】:2014-03-25 20:17:52
【问题描述】:

我已设置以下相同的身份验证 cookie:

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

在 web.config 中:

<authentication mode="Forms">
  <forms loginUrl="~/Login"  timeout="2" slidingExpiration="true"/>
</authentication>

remember 为 true 或 false 时,结果没有区别,用户在 2 分钟后退出。我的问题在哪里? 谢谢

【问题讨论】:

  • 你在 web config 中使用 sessionState 并且 timeout="2"
  • @akhlesh 不,它没有。我在 global.asax 中有这段代码:“ void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e) { System.Web.HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); }”

标签: c# asp.net-mvc-4 cookies login


【解决方案1】:
FormsAuthentication.SetAuthCookie(member.UserName, member.RememberMe);

如果 member.RememberMe 为 false,则 cookie 将在超时或用户关闭浏览器时过期。

如果 member.RememberMe 为 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 });

【讨论】:

    猜你喜欢
    • 2011-12-02
    • 1970-01-01
    • 2015-05-20
    • 2016-11-04
    • 2015-11-14
    • 2017-07-07
    • 2011-04-21
    • 2019-08-06
    • 1970-01-01
    相关资源
    最近更新 更多