【问题标题】:Custom [Authorize] filter for Ajax Jquery requestsAjax Jquery 请求的自定义 [Authorize] 过滤器
【发布时间】:2016-11-22 23:12:55
【问题描述】:

我从 AuthorizeAttribute 类派生并制作了自己的 CustomAuthorize

  protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAjaxRequest())
        {
            filterContext.HttpContext.Response.StatusCode = 401;
            filterContext.Result = new JsonResult
            {

                Data = new DataSourceResult { Errors = new { error = "NotAuthorized" } }
                ,JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
        }
        else
        {
          // this is a standard request, let parent filter to handle it
           base.HandleUnauthorizedRequest(filterContext);
        }
    }

我在很多地方都在使用 Ajax Jquery 调用,但检查每个地方的响应然后执行似乎并不实际

window.location.href='/Auth/login';

我只是想知道,我们可以从 HandleUnauthorizedRequest 方法重定向到登录页面吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 authorization asp.net-authorization jquery-ajaxq


    【解决方案1】:

    创建一个基础控制器,在其上放置自定义授权属性。 比如:

    [YourAuthorizeAttribute]
    public class BaseAuthorizeController : BaseController
    {
        public BaseAuthorizeController() {}
    }
    

    以上内容将应用于您的所有操作,而不仅仅是 ajax 操作。 对于不需要新逻辑的操作,您可以通过将布尔值 false 传递给属性来扩展该属性;

    public class ClaimsAuthorizeAttribute : ActionFilterAttribute
    {
        private readonly bool authorize = true;public YourAuthorizeAttribute(bool authorize = true)
        {
            this.authorize = authorize;
        }
    
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!authorize)
            {
                return;
            }
    
            // Your custom authentication logic
        }
    

    【讨论】:

    • 现在无法添加基本控制器,因为这需要大量重构。还有其他解决方案吗?这不能从 HandleUnauthorizedRequest 方法重定向吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2013-04-12
    • 2014-08-23
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    相关资源
    最近更新 更多