流程如下:
1、首先调用Subject.login(token)
进行登录,其会自动委托给Security Manager
,调用之前必须通过SecurityUtils. setSecurityManager()
设置;
2、SecurityManager
负责真正的身份验证逻辑;它会委托给Authenticator
进行身份验证;
3、Authenticator
才是真正的身份验证者,Shiro API
中核心的身份认证入口点,此处可以自定义插入自己的实现;
4、Authenticator
可能会委托给相应的AuthenticationStrategy
进行多Realm
身份验证,默认ModularRealmAuthenticator
会调用AuthenticationStrategy
进行多Realm
身份验证;
5、Authenticator
会把相应的token
传入Realm
,从Realm
获取身份验证信息,如果没有返回/抛出异常表示身份验证失败了。此处可以配置多个Realm
,将按照相应的顺序及策略进行访问。