0

私のページでは、いくつかのユーザーアクション(システムでのメッセージの送信、記事へのコメントの追加など)に多くの Jquery-ajax を使用しています。この機能は、登録済みのログイン ユーザーのみに許可されます。

例えば:

[Authorize]
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult AddArticleComment(Int64 idArticle, String articleComment)
{
  //process
}        
$(document).ready(function () {
$("#btnAddArticleComment").click(function () {
    showProgressBar();
    jQuery.ajax("/Articles/AddArticleComment",
                        { type: "POST",
                            data: { idArticle: $("#txtArticleId").val(), articleComment: $("#txtArticleComment").val() },
                            success: function (resultObj) {
                                hideProgressBar();
                                LoadArticles($("#txtArticleId").val());
                            },
                            error: function (xhr, status, index, anchor) {
                                hideProgressBar();
                                showInfoBox(false, "some error message");
                            },
                            async: false
                        });
        return false;
    });
};

私のweb.configで、ログイン タイムアウトを 30 分に設定しました。ユーザーが長いコメントを書き込んでログイン制限が切れると、アプリケーションはログインにリダイレクトしません (例: http://localhost/Account/Logon?ReturnUrl....)。

この場合、リダイレクトを行うにはどうすればよいですか?

4

1 に答える 1

0

このブログ投稿をチェックしてください: http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx

その背後にある考え方は、401 エラーをインターセプトし、ログオン ページにリダイレクトして 200 ステータス コードで終了する代わりに、401 ステータス コードをクライアントに伝達するカスタム モジュールを構成することです。これは、AJAX リクエストの場合にのみ行われます。これにより、単純にグローバル AJAX エラー ハンドラーにサブスクライブし、ユーザーが認証されていないことを意味するステータス コード 401 の場合に応じて対応することができます。

于 2012-09-11T16:08:36.563 に答える