shiro——SecurityManager、shiro架构原理

1. SecurityManager 

public interface SecurityManager extends Authenticator, Authorizer, SessionManager {
    Subject login(Subject var1, AuthenticationToken var2) throws AuthenticationException;
    void logout(Subject var1);
    Subject createSubject(SubjectContext var1);
}

看看上面这张图和源码,在shiro-core核心包里,SecurityManager管理着认证、授权、会话管理,至于如果还想用到缓存管理等等功能,那就要另外引入shiro对应的jar包。

再看看Manager的继承关系:

层层继承、层层实现。越往下面的Manager,功能越多,没一个Manager都代表了一种功能:缓存、Realm、认证、授权、会话、默认的、web。个人认为,我们利用Factory工厂实例化SecurityManager时,就是用的默认Manager(DefaultSecurityManager)。

在看看认证使用的是什么? 默认用的是ModularRealmAuthenticator类,所以无需设置SecurityManager的authenticator:

2、架构原理

2.1 Subject

首先将一个用户抽象为一个Subject对象,通过调用对象里的方法来实现对用户的认证、授权、会话、缓存等等的操作。

比如:subject.hasRole()、subject.checkPermission()等等。

2.2 SecurityManager

这是一个核心组件,Subject调用的操作,基本都由SecurityManager去处理并作出相应的回应,所以正如图中一样,SecurityManager管理着很多功能模块,SecurityManager是个接口,每一个功能模块都对应着一个自己的Manager,这样使得shiro框架的代码结构清晰有条理。

具体的认证器、授权器、会话管理器等等这些组件,都有自己的默认实现、默认配置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值