私のWebページでAJAXを使用して認証チケットの有効期限の日時を確認できるWebアプリケーションプロジェクトを実装しようとしています。認証チケットの有効期限が影響を受けることなく確認します
私はslidingExpirationでフォーム認証を使用しています。
私が遭遇する問題は、リセットせずに値をチェックする方法を理解できないことです。 CheckExpiration.aspx - - 私は、単純なページを作成し、以下の背後にあるコードです:
private class AjaxResponse
{
public bool success;
public string message;
public string expirationDateTime;
public string secondsRemaining;
public string issueDate;
}
protected void Page_Load(object sender, EventArgs e)
{
AjaxResponse ar = new AjaxResponse();
JavaScriptSerializer js = new JavaScriptSerializer();
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
string expiration = id.Ticket.Expiration.ToString();
TimeSpan timeRemaining = id.Ticket.Expiration - DateTime.Now;
ar.success = true;
ar.expirationDateTime = expiration;
ar.issueDate = id.Ticket.IssueDate.ToString();
ar.secondsRemaining = timeRemaining.Minutes.ToString() + ":" + timeRemaining.Seconds.ToString();
}
else
{
ar.success = false;
ar.message = "User not authenticated";
}
string output = js.Serialize(ar);
Response.Write(js.Serialize(ar));
}
私はアヤックス毎秒を使って自分のアプリケーションでは、マスターページからこのページを呼び出します。認証の有効期限の半分を過ぎると、有効期限がリセットされます。
この現象を防止するにはどうすればよいですか?リクエストのヘッダーに何かできることはありますか?
チェックは、これはそれに似たものであるか、あなたの問題であるデフ...のhttp:?//www.dotnetmonster.com/Uwe/Forum.aspx/asp-net-security/2316/problem-with-slidingExpiration – Scorpio
私はあなたがリンクしているこの投稿は、.netのデフォルトの動作に問題がある人だと思います。私はあなたが何かをしようとするまで、あなたがアイドル状態に留まるならあなたがサーバレベルでログアウトしたことを知らないので、その行動を気にしません。私はよりユーザーフレンドリーなものを作ろうとしています。そこでは、あなたがログアウトしようとしていることを知らされます。私はまた、認証が別のタブから更新される可能性があるので、ページを入力するときに設定されたjavascriptタイマーにのみ頼りにしたくありません。 –