ページ上の div 内のフォームを取得および投稿するために多くの Ajax リクエストを使用する MVC アプリケーションがあります。ただし、401 を返すだけのカスタム Authorize 属性を作成することで修正した従来の Ajax タイムアウトの問題に遭遇しました。 Jquery経由でログインページにリダイレクトします(この時点ではすべて順調です)。
public class AjaxAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Items["AjaxRequestPermissionDenied"] = true;
}
base.HandleUnauthorizedRequest(filterContext);
}
}
しかし、セッションの有効期限が切れたときにフォームの通常のサーバー側送信を行うと、ログインフォームにリダイレクトされますが、 Url ie にフォームパラメーターが含まれています
Login/Login.aspx?ReturnUrl=%2fTest%2fComp%2fSite%2f4
。そのため、再度ログインすると、必要な div にフォームを挿入する方法がありません。これは、最初に呼び出したページとは別の URL であるためです。
問題は、このような状況をどのように処理して、常にデフォルトのログイン ページにリダイレクトされるようにするか、またはログイン ページへのリンクを含む一般的なタイムアウト ページにリダイレクトするのが最善であるかということです。