引用:如果發出請求時,超過一半的 超時間隔的已經經過了一個有效 認證cookie
滑動期滿復位到期時間。如果cookie過期,則用戶必須重新驗證 。根據配置的超時值 值,通過將 認證cookie有效的時間限制爲 ,可以將SlidingExpiration屬性設置爲false,從而提高應用程序的安全性。
2個在這句話要注意很重要的東西:如果
- ... 的請求時 ...
- ... 一半超時間隔的.. ..
您尚未指定超時,因此將使用默認值30分鐘。
在這句話要注意另一個重要的事情:
的SlidingExpiration屬性設置爲false可以提高 安全
,但我猜你不關心安全性,因爲您已激活它。
UPDATE:
這裏的說明概念的完整的例子:
控制器:
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>
的web.config:
<authentication mode="Forms">
<forms
loginUrl="/auth"
name="authy"
path="/"
slidingExpiration="true"
timeout="1"
/>
</authentication>
不管你留在索引視圖上多久,用戶仍然會被認證。
道歉我明白需要做出一個請求,並且它需要在超時時間的一半以下。但即使如此,cookie仍然過期,到期時間也沒有更新。 – 2012-02-14 10:40:51
@aspect,恩,我不知道。這一直對我來說正如文檔所述。所以你必須做一些不同的事情。雖然說。我還強調以下事實:**超過一半的超時**,而不是超過一半的超時**,如您在評論中所述。如果您希望更新cookie,則必須在超過一半的超時時間後才發送請求,另外a.k.a則需要等待15分鐘才能看到cookie值更改。 – 2012-02-14 10:42:12
這就是我的意思,我明白它應該如何工作的問題是它不應該如何工作。我希望有人能夠讓我洞察爲什麼它不工作,而不是告訴我它應該如何工作。 – 2012-02-14 10:45:09