8.Shiro授权2_授权流程,多realm授权

本文详细介绍了Shiro的授权流程,包括Subject的授权接口如何委托给SecurityManager,再到Authorizer进行实际授权。重点讲解了自定义Realm进行授权的方法,需要实现doGetAuthorizationInfo()来获取用户的角色和权限。在多Realm环境下,ModularRealmAuthorizer负责循环判断每个Realm,只要有Realm匹配成功,授权即认为通过。
摘要由CSDN通过智能技术生成
1.授权流程如下:
    1、首先调用 Subject.isPermitted*/hasRole* 接口,其会委托给SecurityManager,而 SecurityManager 接着会委托给 Authorizer;
    2、Authorizer是真正的授权者,如果调用如isPermitted(“user:view”),其首先会通过
PermissionResolver 把字符串转换成相应的 Permission 实例;
    3、在进行授权之前,其会调用相应的 Realm 获取 Subject 相应的角色/权限用于匹配传入的角色/权限;
    4、Authorizer 会判断 Realm 的角色/权限是否和传入的匹配,如果有多个Realm,会委托给ModularRealmAuthorizer 进行循环判断,如果匹配如 isPermitted*/hasRole* 会返回true,否则返回false表示授权失败。
 
2.自定义realm
首先我们之前学习认证时,自定义realm继承的是AuthenticatingRealm类,在该类下我们实现了doGetAuthenticationInfo()抽象方法,来完成认证。
 
那我们要进行授权就需要继承AuthorizingRealm类,该类是AuthenticatingRealm其子类,在该类下我们实现两个抽象方法,来完成认证和授权。
认证:doGetAuthenti
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值