ajax调用控制器中的方法,在Ajax上授权属性控制器中的操作方法

我试图在我的MVC3应用程序中授权ajax操作方法。当用户会话过期并且要求执行ajax操作方法时会出现问题。 asp.net身份验证系统发送302重定向,而不是发送401,这对于非Ajax请求似乎是合乎逻辑的。但是随着Ajax的发展,它们很快就会混乱起来。所以我决定按照ASP.NET MVC forces an AJAX request be redirected to the login page when the FormsLogin session is no longer active建议的方法。 基本上,在请求结束时,我们检查请求是否是ajax请求,并且存在重定向(302响应)。如果是,那么我们将响应代码从302更换为401.因此,在JavaScript中,我们检查401并从那里执行重定向。这里是我都忍了在Ajax上授权属性控制器中的操作方法

在Global.asax.cs中的基本代码

protected void Application_EndRequest() {

var context = new HttpContextWrapper(Context);

// If we're an ajax request, and doing a 302, then we actually need to do a 401

if (Context.Response.StatusCode == 302 && context.Request.IsAjaxRequest()) {

Context.Response.Clear();

Context.Response.StatusCode = 401;

}

}

jQuery的全局错误处理程序(包括在asp.net mvc的母版页:_Layout.cshtml)

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {

if (jqXHR.status == 401) {

window.location.replace(loginUrl);

}

});

我刚刚很快测试了这段代码,它似乎工作正常。这段代码是否有任何潜在的问题。就asp.net mvc和jquery而言,我是一个相对新手的程序员,所以我想在实际执行代码之前我会询问其他意见。

2011-11-02

Jatin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值