效果:

通过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 = "";
if (Roles.Contains(defailtrole) == false)
{
throw new GeduException("暂无访问权限");
} return base.OnActionExecutionAsync(context, next);
}
}
}

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

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

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

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

最新文章

  1. juery学习总结(二)——juery操作页面元素
  2. Javascript &gt; Eclipse &gt; 自动代码规范化
  3. 高精度快速预览打开dwg文件的CAD控件CAD Image DLL介绍及下载
  4. Hibernate和Jpa的关系
  5. Celery Running Environment
  6. Func&lt;T,TResult&gt;泛型委托
  7. 实习小记-python中不可哈希对象设置为可哈希对象
  8. Cube(规律)
  9. Android数据库--Sqlcipher的使用(二)
  10. list与Set、Map区别
  11. Dapper数据库相关操作
  12. CodeForces801-A.Vicious Keyboard-暴力
  13. 说一说Java的Unsafe类
  14. Hive DQL详解
  15. 在Asp.Net Core中使用中间件保护非公开文件
  16. Redis-Migrate-Tool 使用详解
  17. Luogu2161 [SHOI2009]会场预约-线段树
  18. Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)
  19. 20155321 《网络攻防》 Exp2 后门原理与实践
  20. 查看docker容器日志

热门文章

  1. WCF:又是枚举惹的祸
  2. .net里Release的pdb文件有什么用 是否可以删除
  3. iOS开发-观察者模式
  4. Hadoop3集群搭建之——hbase安装及简单操作
  5. virt-manager中为centos 7.2 扩容根分区
  6. ubuntu 安装SSH并设置免密码登录
  7. Axure RP for Mac(网站交互式原型设计工具)破解版安装
  8. easyui-switchbutton js判断是否启动
  9. 利用jsPDF有效减轻报表型应用服务器的IO负载
  10. 【转载】Mysql load data infile用法(万级数据导入,在几秒之内)