【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 = "";
if (Roles.Contains(defailtrole) == false)
{
throw new GeduException("暂无访问权限");
} return base.OnActionExecutionAsync(context, next);
}
}
}
在这里拿到header里的token,获取当然用户的登录信息,角色信息等,进行匹配即可。
如果没有权限即可结束掉当前请求,并且返回统一的错误提示信息。
全局异常捕获在另一个博文里介绍配置方法
https://www.cnblogs.com/jhli/p/9808827.html
【netcore基础】MVC API接口权限控制Attribute的更多相关文章
- SpringBoot+Shiro+JWT前后端分离实现用户权限和接口权限控制
1. 引入需要的依赖 我使用的是原生jwt的依赖包,在maven仓库中有好多衍生的jwt依赖包,可自己在maven仓库中选择,实现大同小异. <dependency> <groupI ...
- Spring Cloud实战 | 第十一篇:Spring Cloud Gateway 网关实现对RESTful接口权限控制和按钮权限控制
一. 前言 hi,大家好,这应该是农历年前的关于开源项目 的最后一篇文章了. 有来商城 是基于 Spring Cloud OAuth2 + Spring Cloud Gateway + JWT实现的统 ...
- 跟我一起学.NetCore之熟悉的接口权限验证不能少(Jwt)
前言 权限管控对于一个系统来说是非常重要的,最熟悉不过的是菜单权限和数据权限,上一节通过Jwt实现了认证,接下来用它实现接口权限的验证,为什么不是菜单权限呢?对于前后端分离而言,称其为接口权限感觉比较 ...
- IdentityServer4实现.Net Core API接口权限认证(快速入门)
什么是IdentityServer4 官方解释:IdentityServer4是基于ASP.NET Core实现的认证和授权框架,是对OpenID Connect和OAuth 2.0协议的实现. 通俗 ...
- 【SpringSecurity系列3】基于Spring Webflux集成SpringSecurity实现前后端分离无状态Rest API的权限控制
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/02-springsecurity-state ...
- 【SpringSecurity系列1】基于SpringSecurity实现前后端分离无状态Rest API的权限控制
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...
- CloudStack API访问权限控制
在我写开始之前,请先看下CS中国社区的一篇文章http://www.cloudstack-china.org/2012/12/1465.html,在第1点里讲了关于权限级别,command属性文件位置 ...
- Restful 接口权限控制
前言 有人说,每个人都是平等的: 也有人说,人生来就是不平等的: 在人类社会中,并没有绝对的公平, 一件事,并不是所有人都能去做: 一样物,并不是所有人都能够拥有. 每个人都有自己的角色,每种角色都有 ...
- gin-jwt对API进行权限控制
前言 之前文章简单介绍了如何运行gin+vue的前后端分离开源项目,该项目是学习了Gin实践教程后结合vue-element-admin写的,该教程讲得很详细,适合入门Gin.本篇文章将介绍gin+v ...
随机推荐
- Using a Virtex Device to Drive 5V CMOS-Level Signals
Must tri-state outputs and use an external resistor to pull up to 5V To drive 5V CMOS-level inputs, ...
- GOCN每日新闻(2017-08-12)
1.为什么我们从 Python 转向 Go 2.Go 实现常见数据结构 3.3年半,50万行 Go 代码 4.Go 游戏引擎 oka 5.Go 是隐藏学习曲线的语言
- Session.Abandon和Session.Clear的实现和区别
我在网上找了一个比较贴切的描述: Session.Clear()就是把Session对象中的所有项目都删除了,Session对象里面啥都没有.但是Session对象还保留.Session.Abando ...
- Spark2.2+ES6.4.2(三十一):Spark下生成测试数据,并在Spark环境下使用BulkProcessor将测试数据入库到ES
Spark下生成2000w测试数据(每条记录150列) 使用spark生成大量数据过程中遇到问题,如果sc.parallelize(fukeData, 64);的记录数特别大比如500w,1000w时 ...
- [Canvas]炸弹人初成版
试玩请点此下载代码,并使用浏览器打开index.html. 用方向键操作小人,空格键放炸弹,把敌人消灭算赢,被炸弹炸中或是碰到敌人算输. 图例: 源码: <!DOCTYPE html> & ...
- Android性能优化-减小APK大小
前言 用户通常会避免下载比较大的应用,特别是连接到2G和3G网络,或者按流量收费的设备.这篇文章描述了如何减小apk的大小,帮助你让更多的用户下载你的app. 一 理解APK的结构 在讨论如何减小ap ...
- OpenLayers 官网例子的中文详解
https://segmentfault.com/a/1190000009679800?utm_source=tag-newest 当你希望实现某种功能的时候,即使你对 openlayers 几乎一窍 ...
- Android 使用WebView加载含有Canvas的页面截屏处理
无法截屏主要原因是webview渲染方式所导致:只需要AndroidManifest.xml中设置属性Android:hardwareAccelerated=”false”.
- Mybatis 记录
1. #{}, ${}两种传参数方式的区别 1) ${} 会将传入的参数完全拼接到sql语句中,也就是相当于一个拼接符号. 也就是,最后的处理方式就相当于 String sql = select * ...
- x-pack
x-pack安装>官网安装步骤https://www.elastic.co/downloads/x-pack >x-pack简介X-Pack是一个Elastic Stack的扩展,将安全, ...