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 回答