Shiro01 功能点框图、架构图、身份认证逻辑、身份认证代码实现(4)
- UID
- 1066743
|
Shiro01 功能点框图、架构图、身份认证逻辑、身份认证代码实现(4)
认证总结1、认证步骤
1.1、收集用户身份/凭证,即如用户名/密码;
1.2、调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationException 异常,根 据异常提示用户错误信息;否则登录成功;
1.3、最后调用 Subject.logout 进行退出操作。
2、改进方案
2.1、用户名和密码硬编码在ini配置文件,以后需要改成如数据库存储,且密码需要加密存储;
2.2、用户身份Token可能不仅仅是用户名和密码,也可能还有其他的,如登录时允许用户名/ 邮箱/手机号同时登录。
3、认证流程
3.1、流程图
认证外部流程图:
认证内部流程图:
3.2、首先调用 Subject.login(token)进行登录,其会自动委托给 Security Manager,调用之前必 须通过 SecurityUtils. setSecurityManager()设置; 还需要为SecurityManager设置Realm;
3.3、SecurityManager 负责真正的身份验证逻辑;它会委托给 Authenticator 进行身份验证;
3.4、Authenticator才是真正的身份验证者,ShiroAPI中核心的身份认证入口点,此处可以自 定义插入自己的实现;
3.5、Authenticator可能会委托给相应的AuthenticationStrategy进行多Realm身份验证,默认 ModularRealmAuthenticator 会调用 AuthenticationStrategy 进行多 Realm 身份验证;
3.6、Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有返 回和抛出异常表示身份验证失败了。此处可以配置多个Realm,将按照相应的顺序及策略进 行访问。
4、技巧:从subject.login(token)往下查看源码就可以清楚地知道整个登录认证流程 |
|
|
|
|
|