有人可以向我解释ASP.NET Forms身份验证的工作原理,因为我似乎没有得到它并且我一直在退出。
目前,我有用户名,密码和“保持登录状态”复选框。从这些值我创建一个票证和cookie,如下所示:
// Create ticket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,email,DateTime.UtcNow,DateTime.UtcNow.AddMinutes(30),remember,String.Empty);
// Encrypt ticket
string cookie_contents = FormsAuthentication.Encrypt(ticket);
// Create cookie
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,cookie_contents);
if (remember) {
cookie.Expires = DateTime.UtcNow.AddDays(90);
}
cookie.Path = FormsAuthentication.FormsCookiePath;
cookie.Secure = true;
// Add cookie to response
Response.Cookies.Add(cookie);
我希望通过此代码我可以登录我的网站并假设我选中“保持登录状态”,我保持登录状态至少90天?
然而,我所看到的是,我是在首次登录后至少30分钟退出(这是留给机票预留的时间?)。
Cookie过期和故障单过期之间的区别是什么?如何保持自己的签名。我是否需要为cookie和票证设置90天?
答案 0 :(得分:22)
如果可以避免,请不要直接操纵cookie。您可以使用FormsAuthentication.SetAuthCookie(username, persistent)
对用户进行签名。此处持久表示“不使用会话cookie”。
然后,您应该在
下的web.config中指定cookie到期日期 <system.web>
<authentication mode="Forms">
<forms timeout="50000000" slidingExpiration="true"/>
</authentication>
</system.web>
滑动到期意味着将为每个请求续订cookie。超时以分钟为单位,所以示例非常高:)
看一下这个问题以及Scott Gu博客的链接:Forms Authentication Cookie Expiration