asp.net-mvc-4 – MVC 4表单身份验证(无限登录)

我很惊讶我在interwebz上找不到一个好的答案,所以我们在这里.

我将FormsAuthenticationTicket设置为在一周后过期.这与我们登录表单中的“记住我”设置一起使用.这是通过以下方式实现的:

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName);

// set the auth token expiration to a week
var authTicket = new FormsAuthenticationTicket(1, user.Email, DateTime.Now, DateTime.Now.AddHours(168), true, userData);
var encryptedTicket = FormsAuthentication.Encrypt(authTicket);

cookie.Value = encryptedTicket;
cookie.Expires = authTicket.Expiration;

有了这个,我还扩展了会话超时,因为我们的许多用户都在相同的时间内保持应用程序打开:

<forms loginUrl="~/account/sign-in" timeout="10080" name="t5S4U4Y152" domain=".xxxxxxx.xxx.xxxxx"/>

我的问题 :

我被要求将其作为一个非过期的cookie,这样只要用户保留它,它们就会始终登录 – 或多或少是无限登录.是否有默认值我可以设置票证和超时以实现此目的?

是的,我可以将到期时间设置为现在的50年,但我想知道是否有更清洁或更合适的方法?

最佳答案 没有任何价值你可以设置到期,所以它是无限的.你只需要将它设置为很长的东西.

如您所知,如果您没有设置过期,则cookie仅在会话期间(浏览器关闭时)存在,这绝对不是您想要的.

您还可以使用slidingexpiration = true,以便每当用户返回该站点时,cookie上的过期日期将刷新为Today Timeout而不是DateInitiallyIssued Timeout

点赞