Shiro源码分析系列:03.用户认证流程

2019-07-20  本文已影响0人  城南码农

简单概念

在上一章节,我们探讨了Filter的执行流程,接下来仔细分析用户的登陆流程。
先看看shiro官方给出的一张图:


login from apache shiro.jpg

再看几个简单概念

登陆流程

具体的登陆流程如下:


Authentication.png

1.从FormAuthenticationFilter的executeLogin()方法开始,把post表单提交的用户名称和密码封装为token,调用subject.login(token);
2.调用AuthenticatingSecurityManager.authenticate() 会调用securityManage配置的authenticator的authenticate()方法;
3.AbstractAuthenticator是抽象类,具体的实现还是调用ModularRealmAuthenticator.doAuthenticate(),这个方法主要是判断当前配置的登陆realm是单个还是多个;
4.单个realms调用return doSingleRealmAuthentication();
多个realms调用return doMultiRealmAuthentication();
5.单个realm的doGetAuthenticationInfo(),由业务去实现根据用户名查询用户信息,也就是认证的基础流程。具体的认证密码流程统一是在realm的父类AuthenticatingRealm实现.

至此,整个认证流程已经结束。

实践记录

参考

即刻学院:身份验证
apache shiro: Apache Shiro Authentication

上一篇 下一篇

猜你喜欢

热点阅读