gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 20:02:43 25 4
gpt4 key购买 nike

我想在浏览器关闭时使 FormsAuthentication 的 cookie 过期。(我希望它像 PHP session 一样工作)

这是我位于模型(而非 Controller )中的身份验证代码。

模型/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);

Web.config

<authentication mode="Forms">
<forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>

还有一个问题是,有2次设置cookie超时,

在票中,

DateTime.Now.AddDays(1),

以及 Web.config 文件中的身份验证

<forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms>

它们有何不同,哪一个会对实际的过期 cookie 产生影响?

谁知道,请指教。

谢谢!

最佳答案

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

至于你的第二个问题,如果你不指定超时,则使用 web.config 条目。

关于Asp.Net MVC3 - FormsAuthentication,如何在浏览器关闭时使 cookie 过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10743289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com