jquery – 在ajax表单发布之前检查mvc中的http授权

前端之家收集整理的这篇文章主要介绍了jquery – 在ajax表单发布之前检查mvc中的http授权前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_1@在构建将jquery ajax合并到其GUI中的内容管理系统时,我遇到了一个障碍.似乎有些客户花了太长时间思考他们要写什么,因此服务器会话将它们记录下来,自然就是网络他们根本不知道这一点.当他们尝试提交更改时,我使用ajax调用服务器来保存数据.

@H_502_1@我期望接下来发生的是MVC服务器应用程序将返回“401 Unauthorized”状态.然后,我可以获取我的jquery ajax对象,要求用户登录,然后在用户获得授权后重新发送更改.

@H_502_1@但是,从MVC应用程序实际返回的是“302 Found”状态和登录表单页面重定向URL.登录表单页面返回“200 OK”状态代码,jquery ajax对象调用成功事件,告诉用户一切都成功,因为这就是MVC应用程序所说的内容.

@H_502_1@我有没有办法让MVC应用程序以我认为应该或我必须修改我的jquery ajax事件来检测登录页面

@H_502_1@更新:

@H_502_1@我使用了反射器来查看MVC代码和authorize属性,返回一个NotAuthorizedResult,其代码如下(0x191 = 401)

@H_502_1@

public override void ExecuteResult(ControllerContext context)  
{  
    if (context == null)  
    {  
        throw new ArgumentNullException("context");  
    }  
    context.HttpContext.Response.StatusCode = 0x191;  
}
@H_502_1@我在想,表格授权HttpModule可能会看到401并强制重定向.
最佳答案
你可以尝试这样的事情:

@H_502_1@

    void context_EndRequest(object sender,EventArgs e)
    {
        var app = sender as HttpApplication;
        var response = app.Response;
        var request = app.Request;

        if ((response.StatusCode == 302) && IsAjaxRequest(request))
            response.StatusCode = 401;
    }
@H_502_1@在HttpModule中,它将依次在FormsAuth模块之后,因此将更正状态代码.不漂亮但有效.

猜你在找的jQuery相关文章