Asp.Net MVC3 - FormsAuthentication,如何在浏览器关闭时使cookie过期?

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产生影响?

有人知道,请告诉我.

谢谢!

Eri*_*sch 9

浏览器关闭时,您无法使cookie过期.但是,你可以使cookie非持久化,这意味着它不会保存cookie,因此当你打开一个新的浏览器时,它将有一个新的cookie(但是,请注意,大多数浏览器缓存非持久性的方式)带有标签的cookie,必须关闭整个浏览器才能清除它.

至于第二个问题,如果没有指定超时,则使用web.config条目.