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

Asp.net mvc 4 MVC 4表单身份验证(无限登录),asp.net-mvc-4,c#-4.0,forms-authentication,Asp.net Mvc 4,C# 4.0,Forms Authentication,我很惊讶在interwebz上找不到一个好的答案,所以我们来了 我正在设置一张格式的身份验证单在一周后过期。这与登录表单上的“记住我”设置一起使用。这是通过以下方式实现的: var cookie = new HttpCookie(FormsAuthentication.FormsCookieName); // set the auth token expiration to a week var authTicket = new FormsAuthenticationTicket(1, use

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

我正在设置一张
格式的身份验证单
在一周后过期。这与登录表单上的“记住我”设置一起使用。这是通过以下方式实现的:

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
,而不是
DateInitiallyIssuited+Timeout

您将上述服务器端代码准确地放在哪里?@Sagi-该代码在服务类中,这是由控制器方法调用的-您可以轻松地将其直接放入控制器中,尽管这可能不是最佳设计模式。