Asp.net的mvc自定义机制来处理未经授权的请求 [英] Asp.net Mvc custom mechanism to handle unauthorized request

查看:138
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆