【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 ...
随机推荐
- vs2008快捷键
Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL ...
- 关于产品UE的胡思乱想
1.产品的目标是 取悦 用户 不能只盯着功能实现,而不考虑用户使用. 我们的目标不应该不过让用户使用我们的产品.而是让用户在使用我们产品过程中感到 "愉悦". 2.用户是SB 3 ...
- 移动电源、3G路由拆机
这款电源4400mAh,淘宝也就八十元左右,可以作为无线路由使用,可以插3G网卡,总的来说还算不错,关键是外观精美,网上一堆和华美A100那样的,可惜实在太丑,这款外观虽然漂亮,但是和一百多的相比不支 ...
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...
- Cassandra的数据模型的理解
Cassandra属于NoSQL数据库,NoSQL和传统关系型数据库不同,NOSQL偏好数据冗余,因为NoSQL一般无法做表关联查询. (1) keySpace 基本上可以将Keyspa ...
- linux下安装python dlib依赖
dlib是主要用于机器学习的库,封装了机器学习算法,可以非常方便的实现比如人脸识别,车辆识别,物体检测以其他很多功能,dlib默认使用C++进行开发,另外图像识别有一部分支持python接口开发,上手 ...
- Memcache及telnent命令具体解释
1.启动Memcache 经常使用參数 memcached 1.4.3 -p <num> 设置port号(默认不设置为: 11211) -U <num> U ...
- fiddler展示serverIP方法
转载自:http://www.xuanfengge.com/fiddler-displays-the-set-ip-method.html 前言 由于web前端在多个环境中开发,需要经常更换host, ...
- MVC项目实践,在三层架构下实现SportsStore-11,使用Knockout实现增删改查
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- C#-MVC开发微信应用(3)--文本消息和图文消息的应答
最近咨询微信的人很多,感觉这块也是一块商机,也为了演示SNF快速开发平台的优势,就用SNF快速开发平台开发出一套微信应用程序.使用<SNF.CodeGenerator>代码生成工具可以节省 ...