博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot+springsecurity+jwt进行系统权限开发
阅读量:4069 次
发布时间:2019-05-25

本文共 1295 字,大约阅读时间需要 4 分钟。

说明:由于涉及的东西较多,只是初略的写了一下,思路有点断层或跳跃,敬请谅解!

1、通过idea创建一个springboot项目,然后引入spring-security与jwt的jar包依赖;

org.springframework.boot
spring-boot-starter-security
io.jsonwebtoken
jjwt
0.9.0

2、权限的表结构设计:

用户表:user

角色表:role

菜单表:menu

角色菜单表:role_menu

注:由于我这边设计的是一个用户对应一个角色,不是一对多的关系,因此没有设计“用户角色表”,具体大家视情况而定;

数据库执行脚本在此处,如下图所示:

3、配置数据库链接与mybatis配置,在application.yml中配置,根据自身情况修改即可,如下图:

4、WebSecurityConfig.java是自定义的一个配置类,它继承了spring-security的WebSecurityConfigurerAdapte类,并对其多个方法进行了重写,其中重写的

configure(HttpSecurity http)方法

我们可以在这个方法中设置一些路径的权限请求,登录、退出的页面跳转,异常的捕获处理及前置过滤器等

上图中的“/authority/customLogin”请求方法在AuthorityController.java中,该方法用于用户的登录并授权,所说的授权是指获取到用户的所有权限后,将权限生成为一个加密后的token,将该token返回给前端

上图中的JWTAuthenticationFilter过滤器类需要关注一下,该过滤器主要做的工作是1:解析权限token;2、将解析后的权限存入spring-security中;

其中重写的

configure(AuthenticationManagerBuilder auth)方法

自定义的CustomUserDetailService.java类实现了spring-security的UserDetailsService接口,主要实现了loadUserByUsername()方法,该方法用于获取用户的所有权限

 

注意:WebSecurityConfig.java类的头部需要添加相关注解:

@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)

5、写一个测试类的TestController.java,对权限的控制进行测试,可以使用postman进行模拟请求

测试类如下:

 

(1)、首先要请求用户登录授权接口,获取到用户的权限token与明文权限

 

(2)、然后对TestController.java类中的方法进行请求,看是否实现了权限的控制

 

转载地址:http://mhmji.baihongyu.com/

你可能感兴趣的文章
docker 文件位置[备忘]
查看>>
rhel7 kickstart 参考[备忘]
查看>>
DNS请求分析
查看>>
docker - 资源限制
查看>>
puppet 配置 1. 服务器, 客户端配置说明
查看>>
puppet 配置 2 模块
查看>>
puppet 配置 3. 资源
查看>>
打造自己的 DockerImage
查看>>
rhel7.2 优化技巧
查看>>
megacli 划分, 删除 raid 方法备忘
查看>>
ceph - crush map 与 pool
查看>>
openstack 管理二十二 - cinder 连接多个存储 backend
查看>>
puppet 配置 3.1 管理 sysct.conf
查看>>
puppet 配置 3.2 管理 hosts
查看>>
puppet 配置 - 3.3 rpm 管理
查看>>
puppet 配置 3.4 文件管理与自定义模块
查看>>
puppet 配置 3.5 参数
查看>>
puppet 配置 4 条件语法
查看>>
puppet 配置 5 常见例子
查看>>
[备忘] 磁盘空间不足分析
查看>>