Exp*_* be 7 asp.net authentication cookies asp.net-mvc-3
我想在浏览器关闭时使FormsAuthentication的cookie过期. (我希望它像PHP会话一样工作)
这是我的Auth代码,位于Model(非控制器)中.
型号/ Auth.cs
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
model.UserId,
DateTime.Now,
DateTime.Now.AddDays(1),
true,
model.UserId +" "+reader["lastname"],
FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
HttpContext.Current.Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
Web.config文件
<authentication mode="Forms">
<forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
还有一个问题是,有2次设置cookie超时,
在票,
DateTime.Now.AddDays(1),
Run Code Online (Sandbox Code Playgroud)
并在Web.config文件中进行身份验证
<forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms>
Run Code Online (Sandbox Code Playgroud)
它们有多么不同,哪一个会对实际的过期cookie产生影响?
有人知道,请告诉我.
谢谢!
浏览器关闭时,您无法使cookie过期.但是,你可以使cookie非持久化,这意味着它不会保存cookie,因此当你打开一个新的浏览器时,它将有一个新的cookie(但是,请注意,大多数浏览器缓存非持久性的方式)带有标签的cookie,必须关闭整个浏览器才能清除它.
至于第二个问题,如果没有指定超时,则使用web.config条目.
归档时间: |
|
查看次数: |
6927 次 |
最近记录: |