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,展示界面未到按钮级别进行控制。

菜单管理

菜单管理

资源权限

资源权限

角色管理

角色管理

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

角色分配

角色分配

角色分配2

session

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

session

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

未登录访问

未登陆访问

获取Access_Token

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

获取Access_Token

通过Access_Token 访问

通过Access_Token访问

登录

登录

登录后访问

登录后通过cookie访问

注意

不要在同一台电脑上同时测试登录授权和通过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

未登录获取授权码

前端登录

账号:admin

密码:000000

前端登录

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

授权页面

授权页面

获取授权码

获取授权码

地址栏 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

获取token

通过token 获取数据

获取数据

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

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

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值