gpt4 book ai didi

c# - .NET 中的 Cookie 和 session 过期

转载 作者:行者123 更新时间:2023-11-30 20:45:28 26 4
gpt4 key购买 nike

我有一个 MVC4 单一应用程序页面。在登录页面中有 3 个字段:用户、密码和“记住我”复选框。C# 登录代码是这样的:

   if (WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
return Json(new { success = true, redirect = returnUrl });
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}

我想这样做:

  • 如果用户登录时使用“记住我”true - cookie 将一直保留到用户注销为止。

  • 如果用户使用“记住我”false 登录 - cookie 将在 3 小时后过期。

在 web.config 中我有这段代码:

<authentication mode="Forms">
<forms loginUrl="~/" timeout="180" cookieless="UseCookies" slidingExpiration="false" />
</authentication>
<sessionState timeout="180" />

问题是当用户短时间(通常为 10-30 分钟)不触摸页面,然后用户尝试在页面中执行某些操作时 - 出现错误

"Authorization has been denied for this request."

(虽然sessionStation超过了30分钟!)

用户刷新页面后 - 如果 cookie 尚未过期 - 一切正常。但我当然不想让用户每 15 分钟左右刷新一次页面,这是一个单页应用程序。

因此,我尝试将 slidingExpiration 更改为“true”并每 17 分钟创建一次 ping(使用 ajax),它确实停止了 session 过期和烦人的消息 - 但 cookie 没有3 小时后过期(我登录时记得我是“false”)!

我能做什么?

最佳答案

从 IIS 管理控制台右键单击您的应用程序池并查找“空闲超时(分钟)”。

您可以将设置调整为 0(零),这会有效地禁用超时,这样应用程序池将永远不会因空闲而关闭。

关于c# - .NET 中的 Cookie 和 session 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28134459/

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