SpringBoot使用tools-auth进行权限验证
简单快速的在项目中进行权限验证
一、导入依赖
<dependency> <groupId>cn.gjing</groupId> <artifactId>tools-auth</artifactId> <version>1.0.0</version> </dependency>
二、权限注解
该注解使用在API上,用于对用户请求方法时进行身份认证
1、@RequiredPermissions
权限认证,请求的用户需要存在该注解中设置的权限,否则抛出PermissionAuthorizationException
参数 | 描述 |
---|---|
value | 需要的权限 |
2、@RequiredRoles
角色认证,请求的用户需要存在该注解中设置的角色,否则抛出RoleAuthorizationException
参数 | 描述 |
---|---|
value | 需要的角色 |
三、token生成器
主要用来生成Token和解析Token,使用时可以通过@Resource
注解进行依赖注入
public class TestController { @Resource private TokenAssistant tokenAssistant; @GetMapping("/token") public void getToken() { Map<String, Object> map = new HashMap<>(16); map.put("user", "张三"); String token = this.tokenAssistant.createToken(map); System.out.println("生成的token:" + map); System.out.println("解析token:" + this.tokenAssistant.parseToken(token)); } }
四、启动类增加注解
在项目启动类增加@EnableAuthorization
注解用于开启项目权限校验
五、设置权限认证监听器
通过监听器可以对用户拥有的权限进行提供以及进行自己的认证校验
/** * @author Gjing **/ @Component public class MyListener implements AuthorizationListener { /** * 增加用户的访问权限用于对增加了权限注解的方法进行身份认证,如果返回null会抛出NoAccountException * 这里模拟权限数据,给当前请求的用户增加admin角色和add权限。实际使用时 * 用户权限你可以保存在任何地方 * * @param token 用户Token * @return AuthorizationMetaData */ @Override public AuthorizationMetaData supplyAccess(String token) { SimpleAuthorizationMetaData metaData = new SimpleAuthorizationMetaData(); metaData.addRole("admin"); metaData.addPermission("add"); return metaData; } /** * 权限注解验证通过后会触发该方法,你可以在这里做一些项目中自己的权限认证逻辑 * * @param token 用户Token */ @Override public void authentication(String token) { } /** * 验证全部通过后且方法执行完毕 * * @param request HttpServletRequest * @param method 请求的方法 */ @Override public void authenticationSuccess(HttpServletRequest request, Method method) { System.out.println(); } }
六、额外配置
可以通过这些配置控制拦截路径和过滤路径,以及token存在的请求头名称等等...全部配置如下:
snow: auth: # 拦截的路径 path: /** # 排除的路径 filter: # 生成token的加密方式 type: hs256 # token存放的请求头名称 header: Authorization # 加密的盐 salt:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【漫画】JAVA并发编程 如何解决原子性问题
在并发编程BUG源头文章中,我们初识了并发编程的三个bug源头:可见性、原子性、有序性。在如何解决可见性和原子性文章中我们大致了解了可见性和有序性的解决思路,今天轮到最后一个大bug,那就是原子性。 知识回顾 锁模型 JAVA中的锁模型 锁是一种通用的技术方案,Java 语言提供的 synchronized 关键字,就是锁的一种实现。 synchronized 是独占锁/排他锁(就是有你没我的意思),但是注意!synchronized并不能改变CPU时间片切换的特点,只是当其他线程要访问这个资源时,发现锁还未释放,所以只能在外面等待。 synchronized一定能保证原子性,因为被 synchronized 修饰某段代码后,无论是单核 CPU 还是多核 CPU,只有一个线程能够执行该代码,所以一定能保证原子操作 synchronized也能够保证可见性和有序性。根据前第二篇文章:Happens-Before 规则之管程中锁的规则:对一个锁的解锁 Happens-Before 于后续对这个锁的加锁。即前一个线程的解锁操作对后一个线程的加锁操作可见。综合 Happens-Before 的...
- 下一篇
PrestaShop 1.7 如何添加网站的跟踪代码
在 PrestaShop 创建购物车的时候,我们希望 PrestaShop 能够跟踪用户的访问。 比如说使用 Google Analytics 或者 matomo 来对购物车网站进行跟踪,如何进行操作和进行配置呢? 这里有一些捷径可以去做。如果你安装 Matomo 的话,你可能需要被要求安装 Matomo,但是这个插件不是免费的,你可能需要支付不少的费用。 但是 Google Analytics 插件是免费的,并且是官方提供的,因此我们可以考虑在安装 Google Analytics 插件后将 Matomo 进行修改后嵌入进去来进行网站访问的跟踪。 进入 PrestaShop 的后台控制台界面,然后在模块部分搜索模块名称 Google Analytics。 单击配置后,输入你的 Google Analytics 的 Tracking ID,然后保存后你就可以到 Google Analytics 上去访问查看你的配置是否生效了。 同时你也可以到 PrestaShop 的前台界面中查看源代码,看源代码中是否已经有 Google 分析的配置在里面了。 如果已经有了就说明配置已经成功了。 如果...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长