0

ページ上の 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 であるためです。

問題は、このような状況をどのように処理して、常にデフォルトのログイン ページにリダイレクトされるようにするか、またはログイン ページへのリンクを含む一般的なタイムアウト ページにリダイレクトするのが最善であるかということです。

4

2 に答える 2

0

この記事は、私の特定のシナリオに非常に役立ちました。これが他の人に役立つことを願っています

http://markfreedman.com/index.php/2012/02/28/handling-session-and-authentication-timeouts-in-asp-net-mvc/

于 2013-07-11T12:35:19.410 に答える