gpt4 book ai didi

c# - MVC3 cookie 的滑动过期不起作用

转载 作者:行者123 更新时间:2023-11-30 22:31:23 26 4
gpt4 key购买 nike

我在 MVC3 应用程序中使用内置的表单例份验证。我目前面临的问题是 cookies slidingexpiration 不工作。

web.config 文件包含以下行:

<forms loginUrl="/auth" name="authy" path="/" slidingExpiration="true" />

注意:我已经声明了 slidingexpiration,即使默认是 true。

在我的代码中,我使用了基本的 Membership Provider 类,没有扩展或修改。我的 global.asax 文件使用的是系统默认值。

添加代码示例没有意义,因为这只是一个没有添加额外代码的基础项目。我正在使用 FormsAuthentication.SetAuthCookie(username, true); 来初始设置 cookie。

最佳答案

引自documentation :

Sliding expiration resets the expiration time for a valid authentication cookie if a request is made and more than half of the timeout interval has elapsed. If the cookie expires, the user must re-authenticate. Setting the SlidingExpiration property to false can improve the security of an application by limiting the time for which an authentication cookie is valid, based on the configured timeout value.

这句话中有 2 件非常重要的事情需要注意:

  1. ... 如果提出请求 ...
  2. ... 超时间隔的一半 ....

您尚未指定超时,因此将使用默认值 30 分钟。

在这句话中要注意的另一件重要事情:

Setting the SlidingExpiration property to false can improve the security

但我猜你不关心安全性,因为你已经激活了它。


更新:

这里有一个完整的例子来说明这个概念:

Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
FormsAuthentication.SetAuthCookie("foo", true);
return View();
}

[Authorize]
public ActionResult Foo()
{
return Json(User.Identity.Name + " is still authenticated", JsonRequestBehavior.AllowGet);
}
}

查看:

<script type="text/javascript">
$(function () {
(function () {
var caller = arguments.callee.caller;
window.setTimeout(function () {
$.getJSON('@Url.Action("foo")', function (result) {
$('#msg').append($('<div/>', { text: result }));
caller();
});
}, 10000);
})();
});
</script>

<div id="msg"></div>

网络配置:

<authentication mode="Forms">
<forms
loginUrl="/auth"
name="authy"
path="/"
slidingExpiration="true"
timeout="1"
/>
</authentication>

无论您在索引 View 中停留多长时间,用户仍将通过身份验证。

关于c# - MVC3 cookie 的滑动过期不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275327/

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