2

過去数か月間、認証のタイムアウトが 30 に設定されているにもかかわらず、非アクティブ状態が 20 分間続いただけで、認証が早期に期限切れになることがあるという苦情がユーザーから寄せられていました。認証時間の半分が残っていて、何かをする可能性を残して、10分待って、何か他のことをして、21分待って、「早い」タイムアウトを取得します。

マスター ページの Page_Load でこのようなことを行うことの潜在的な欠点はありますか?

if(CurrentUser != null) {
    FormsAuthentication.SetAuthCookie(CurrentUser.UserName, false);
}

...したがって、すべてのリクエストでスライド有効期限をリセットしますか?

編集:

このコードは、私が最終的に使用したものです。1 分に 1 回だけトークンをリセットします。

var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var ticket = FormsAuthentication.Decrypt(cookie.Value);

if (ticket.IssueDate.AddMinutes(1) < DateTime.Now && ticket.IssueDate.AddMinutes(30) > DateTime.Now) {
    FormsAuthentication.SetAuthCookie(currentUser.UserName, false);
}
4

1 に答える 1

2

最大の欠点は、キャッシュが無効になることです。たとえば、<%@ OutputCache%>ディレクティブは正しく機能しなくなります。そのため、キャッシュミスが原因でパフォーマンスが低下する可能性があります。

可能であれば、最も簡単な方法は、有効期限のタイムアウトを増やすことです。

于 2012-08-20T18:03:29.073 に答える