Asp.net的mvc自定义机制来处理未经授权的请求 [英] Asp.net Mvc custom mechanism to handle unauthorized request
本文介绍了Asp.net的mvc自定义机制来处理未经授权的请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有关我的网站,我要为安全控制器(或动作)以下行为
如果用户发出正常请求重定向到登录页面(这是我随便就能做到的)
如果请求是阿贾克斯键入 Request.IsAjaxRequest()==真
,返回状态code 401
如何创建一个过滤器为这个?
解决方案
公共类MyCustomAuthorize:AuthorizeAttribute
{
保护覆盖无效HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//如果ajax请求设置状态code和响应结束
如果(filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.Status code = 401;
filterContext.HttpContext.Response.End();
} base.HandleUnauthorizedRequest(filterContext);
}
}
创建如上一个过滤器,它会返回状态code 401未经授权的请求,如果请求直通AJAX的。
如果您正在使用jQuery你可以做如下
jQuery.ajax({
状态code:{
401:功能(){
警报('unauthrized');
}, / *其他选项* /
});
For my website i want following behaviors for secured controller(or action)
if a user makes a normal request redirect to login page (which i have easily able to do)
if request is Ajax type Request.IsAjaxRequest()==true
, return status code 401
How can i create a filter for this??
解决方案
public class MyCustomAuthorize : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//if ajax request set status code and end Response
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.StatusCode = 401;
filterContext.HttpContext.Response.End();
}
base.HandleUnauthorizedRequest(filterContext);
}
}
Create a filter like above, it will return status code 401 for unauthorized request if request is made thru ajax.
If you are using jQuery you can do as below
jQuery.ajax({
statusCode: {
401: function() {
alert('unauthrized');
},
/*other options*/
});
这篇关于Asp.net的mvc自定义机制来处理未经授权的请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文