springboo2.x权限 demo(shiro,sprng security,oauth2)

原文发布于: http://blog.ztgreat.cn/article/70

前言

这是一篇关于权限方面的文章,这是去年的时候结合一些简单的项目,自己抽空瞎折腾的学习demo,进行了一定的整理,涉及的内容包括

spring boot 2.x,shiro,spring security,oauth2

公布出来的目的??,方便爱学习的你(骗赞,给个star)。

本文也不得介绍这些项目流程,也不会讲解怎么实现的,毕竟都是套路,难度不大,自己debug 调试,也算是能力的提高。

每个项目中很多都还没有完善(各种优化都没加),只能学习参考,至于有些自己是如何整合的? 看源码

没错,权限这个东西,要验证很多东西,不明白的时候,只有跟踪流程,了解源码,然后再搜索相关知识,这样也算是自己的能力的一种提高吧,捡现成固然容易,但是没有解决问题的能力,这就很麻烦了。

springboot-shiro

基于spring boot,shiro,mybatis(使用mybatis-plus)的简易的一个后台权限模块,只包含权限部分

前端展示配合 react-authority

此外 另一个权限springboot-security 项目使用spring security 重写了权限部分,从功能上来说是一致的

shiro

权限部分是通过shiro 来实现的,基于资源的访问控制(实质也是角色访问控制),根据请求资源,判断用户是否拥有该资源,进而判断是否允许用户访问,前端使用ant-design-pro来简单的实现,并没有很完善化,可以具体到某个action,展示界面未到按钮级别进行控制。

菜单管理

springboo2.x权限 demo(shiro,sprng security,oauth2)_第1张图片

资源权限

springboo2.x权限 demo(shiro,sprng security,oauth2)_第2张图片

角色管理

springboo2.x权限 demo(shiro,sprng security,oauth2)_第3张图片

可以给每个角色分配菜单和资源

角色分配

springboo2.x权限 demo(shiro,sprng security,oauth2)_第4张图片

springboo2.x权限 demo(shiro,sprng security,oauth2)_第5张图片

session

将用户session 已json字符串的方式 放入redis 中,shiro session 没法直接json序列化到redis,项目中做了一些调整和修改

springboo2.x权限 demo(shiro,sprng security,oauth2)_第6张图片

springboot-security

基于spring boot,spring-security,mybatis(使用mybatis-plus)的简易的一个后台权限模块,只包含权限部分

前端展示配合 react-authority

此外 另一个权限springboot-shiro 项目使用shiro 重写了权限部分,从功能上来说是一致的

spring security

基于资源的访问控制(实质也是角色访问控制),根据请求资源,判断用户是否拥有该资源,进而判断是否允许用户访问,前端使用ant-design-pro来简单的实现,并没有很完善化,可以具体到某个action,展示界面未到按钮级别进行控制。
url 资源判断复用了shiro 中的模块(WildcardPermission),具体代码中有注释。

springboot-security-oauth2

前端展示请配合 react-authority

在springboot-security 项目基础上,融合了部分oauth2的部分功能。

Oauth2-authorizedGrantType-client

在Spring security的基础上集成Oauth2的客户端认证模式,原权限部分不受影响。

基础权限 功能请访问springboot-security

未登录访问

springboo2.x权限 demo(shiro,sprng security,oauth2)_第7张图片

获取Access_Token

http://localhost:8080/oauth/token?grant_type=client_credentials&client_id=client_1&client_secret=123456

springboo2.x权限 demo(shiro,sprng security,oauth2)_第8张图片

通过Access_Token 访问

springboo2.x权限 demo(shiro,sprng security,oauth2)_第9张图片

登录

springboo2.x权限 demo(shiro,sprng security,oauth2)_第10张图片

登录后访问

springboo2.x权限 demo(shiro,sprng security,oauth2)_第11张图片

注意

不要在同一台电脑上同时测试登录授权和通过Access_Token授权访问,否则授权信息会被覆盖。

Oauth2-authorizedGrantType-code

在Spring security的基础上集成Oauth2的授权码认证模式,原权限部分不受影响

基础权限 项目:springboot-security

配合前端展示:react-authority

未登录获取授权码

http://localhost:8080/oauth/authorize?response_type=code&client_id=client_2&client_secret=123456&redirect_uri=http://baidu.com

springboo2.x权限 demo(shiro,sprng security,oauth2)_第12张图片

前端登录

账号:admin

密码:000000

springboo2.x权限 demo(shiro,sprng security,oauth2)_第13张图片

注意:这是前后端分离的前端页面

授权页面

springboo2.x权限 demo(shiro,sprng security,oauth2)_第14张图片

获取授权码

springboo2.x权限 demo(shiro,sprng security,oauth2)_第15张图片

地址栏 code 便是授权码

通过授权码获取token

http://localhost:8080/oauth/token?client_id=client_2&client_secret=123456&grant_type=authorization_code&redirect_uri=http://baidu.com&code=A3dv5E

springboo2.x权限 demo(shiro,sprng security,oauth2)_第16张图片

通过token 获取数据

springboo2.x权限 demo(shiro,sprng security,oauth2)_第17张图片

error 页面,以及授权页面都没有重写(实在不想写前端页面了),只是简单的把功能过了一遍,仅供参考,还有很多没有完善。

项目中都有相应的sql,方便测试

有问题,欢迎提出来,有些我也就简单的进行了测试。

你可能感兴趣的:(【编程之美】,springboot2.0,shiro,oauth2,security,小张的博客)