查询条件/// 登录...">
当前位置:   article > 正文

[转载]【netcore基础】MVC API接口权限控制Attribute

[转载]【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);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中的 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);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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

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

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

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

原文地址:https://www.cnblogs.com/jhli/p/9808835.html

欢迎进qq群交流:704028989

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/586754
推荐阅读
相关标签
  

闽ICP备14008679号