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过滤器比较方便。

  • 相关阅读:
    作用域随笔
    关于取数组地址的识记(&s+1,s+1,&s[0]+1)
    c中关于#与##的简易使用
    Qt Creator的配置
    sizeof对int long double char的使用
    i++与++i的区别
    for循环执行顺序
    gcc 编译的4个过程简单识记
    各进制之间转化识记
    删除临时文件
  • 原文地址:https://www.cnblogs.com/subendong/p/14626741.html
Copyright © 2011-2022 走看看