Shiro框架授权过程实现

4.1授权流程分析

授权即对用户资源访问的授权(是否允许用户访问此资源),用户访问系统资源时的授权流程如图-8所示:
在这里插入图片描述
图-8
其中授权流程分析如下:
1)系统调用subject相关方法将用户信息(例如isPermitted)递交给SecurityManager。
2)SecurityManager将权限检测操作委托给Authorizer对象。
3)Authorizer将用户信息委托给realm。
4)Realm访问数据库获取用户权限信息并封装。
5)Authorizer对用户授权信息进行判定。
思考:思考不使用shiro如何完成授权操作?intercetor,aop。

4.2添加授权配置

在SpringShiroConfig配置类中,添加授权时的相关配置:

第一步:配置bean对象的生命周期管理。

在这里插入图片描述

第二步: 通过如下配置要为目标业务对象创建代理对象(SpringBoot中可省略)。

在这里插入图片描述

第三步:配置advisor对象,shiro框架底层会通过此对象的matchs方法返回值决定是否创建代理对象,进行权限控制。

在这里插入图片描述

说明:使用框架最重要的尊重规则,框架规则指定了什么方式就使用什么方式。

4.3授权服务端实现

4.3.1核心业务分析

在这里插入图片描述

4.3.2Dao实现

业务描述及设计实现。
基于登陆用户ID,认证信息获取登陆用户的用权限信息,并进行封装。
关键代码分析及实现。

第一步:在SysUserRoleDao中定义基于用户id查找角色id的方法,关键代码如下:

在这里插入图片描述

第二步:在SysRoleMenuDao中定义基于角色id查找菜单id的方法,关键代码如下:

在这里插入图片描述

第三步:在SysMenuDao中基于菜单id查找权限标识的方法,关键代码如下:

在这里插入图片描述

4.3.3Mapper实现

业务描述及设计实现。
基于Dao中方法,定义映射元素。
关键代码分析及实现。

第一步:在SysUserRoleMapper中定义findRoleIdsByUserId元素。关键代码如下:

在这里插入图片描述

第二步:在SysRoleMenuMapper中定义findMenuIdsByRoleIds元素。关键代码如下:

在这里插入图片描述

第三步:在SysMenuMapper中定义findPermissions元素,关键代码如下:

在这里插入图片描述

4.3.4Service实现

业务描述及设计实现。
在ShiroUserReam类中,重写对象realm的doGetAuthorizationInfo方法,并完成用户权限信息的获取以及封装,最后将信息传递给授权管理器完成授权操作。
关键代码分析及实现。
修改ShiroUserRealm类中的doGetAuthorizationInfo方法,关键代码如下:
在这里插入图片描述

4.4授权访问实描述现

在需要进行授权访问的业务层方法上添加执行此方法需要的权限标识,例如
在这里插入图片描述
说明:此要注解一定要添加到业务层方法上。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值