zoukankan      html  css  js  c++  java
  • asp.net core 3.1自定义权限过滤器,支持ajax和页面跳转

        public class AuthorizationFilter : IAuthorizationFilter
        {
            public void OnAuthorization(AuthorizationFilterContext context)
            {
                var actionDescriptor = context.ActionDescriptor as Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor;
                var controller = actionDescriptor.ControllerName;
                var action = actionDescriptor.ActionName;
                var token = context.HttpContext.Request.Cookies["token"];
    
                //如果controller为login,无需进行权限校验
                if ("login".Equals(controller, StringComparison.OrdinalIgnoreCase)) return;
                //如果token不为空,且token正确,无需进行权限校验,具体代码自己写
                
    
                var isAjaxRequest = context.HttpContext.Request.Headers.ContainsKey("x-requested-with");
                if (isAjaxRequest)
                {
                    var response = new Response
                    {
                        Code = 401,
                        Message = "没有登录或登录超时"
                    };
    
                    context.Result = new JsonResult(response);
                }
                else
                {
                    context.Result = new RedirectToActionResult("login", "login", null);
                }
            }
        }
                services.AddMvc(config =>
                {
                    config.Filters.Add<ExceptionFilter>();
                    config.Filters.Add<AuthorizationFilter>();
                });

    代码很简单,也可以使用中间件来做。但是貌似使用Filter过滤器比较方便。

  • 相关阅读:
    Alpha冲刺博客集
    Alpha冲刺——第一天
    团队项目需求分析
    结对第二次作业
    项目选题报告
    随笔2 PAT1001.A+B Format (20)
    随笔1 大一下学期自我目标
    大数
    列变位法解密--百度之星B题
    hdu1874 畅通工程续 dijkstra 最短路
  • 原文地址:https://www.cnblogs.com/subendong/p/14626741.html
Copyright © 2011-2022 走看看