zoukankan      html  css  js  c++  java
  • 【netcore基础】MVC API接口权限控制Attribute

    效果:

    通过Attribute来简单控制某个方法的访问权限

    例如:

    下面api只能角色id是【001,002,999】的登录用户才能访问

            /// <summary>
            /// 管理用户列表
            /// </summary>
            /// <param name="req">查询条件</param>
            /// <param name="token">登录令牌</param>
            /// <returns></returns>
            [HttpGet("userlist")]
            [CustomAuthorize(Roles = "001,002,999")]
            public CrmManageUserListResp CrmManageUserList([FromQuery] CrmManageUserListReq req, [FromHeader] [Required] string token)
            {
                return _DoInvoke(req, _userService.CrmManageUserList);
            }

    其中的 CustomAuthorizeAttribute 是自定义的控制器过滤类

    代码如下:

    using GeduData.Server;
    using Microsoft.AspNetCore.Mvc.Filters;
    using System.Threading.Tasks;
    
    namespace GeduDistributionApi.Extension
    {
        public class CustomAuthorizeAttribute : ActionFilterAttribute
        {
            public string Roles { get; set; }
    
            public override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
            {
                Microsoft.AspNetCore.Http.HttpRequest request = context.HttpContext.Request;
                string token = request.Headers["token"].ToString();
    
                //拿到用户信息,匹配角色是否可以访问
                string defailtrole = "999";
                if (Roles.Contains(defailtrole) == false)
                {
                    throw new GeduException("暂无访问权限");
                }
    
                return base.OnActionExecutionAsync(context, next);
            }
        }
    }

    在这里拿到header里的token,获取当然用户的登录信息,角色信息等,进行匹配即可。

    如果没有权限即可结束掉当前请求,并且返回统一的错误提示信息。

    全局异常捕获在另一个博文里介绍配置方法

    https://www.cnblogs.com/jhli/p/9808827.html

  • 相关阅读:
    Selenium 项目搭建过程
    Selenium Javascript 滚动条操作
    Selenium KPI接口 时间等待
    Selenium KPI接口 附件上传
    Selenium KPI接口 警告弹 -alert/confirm/promp
    Selenium KPI接口 窗口句柄
    Selenium KPI接口 iframe切换
    Selenium KPI接口 屏幕截图
    Linux文件权限管理
    Linux中的各种文件类型
  • 原文地址:https://www.cnblogs.com/jhli/p/9808835.html
Copyright © 2011-2022 走看看