1:通过ini配置文件创建securitymannager;
2:调用subject.login方法主体提交认证,提交的token
3:securitymannager进行认证,securitymannager最终由modularrealmauthenticator进行认证;
4:modularrealmauthenticator调用inirealm(给realm传入tolen)去ini配置文件中查询用户信息
5:inirealm根据输入的token(usernamepasswordtoken)从shiro-first.ini查询用户信息,根据账号查询用户信息(账号,密码)
如果查询到用户信息,就给modularrealmauthenticator返回用户信息(账号,密码)
如果查询不到,就给modularrealmauthenticator返回null
6:modularrealmauthenticator接收inirealm返回authentication认证信息
返回的认证信息时null,modularrealmauthenticator抛出异常unknownaccountexception
如果返回认证信息不是null(说明inireal找到了用户),对inirealm返回用户密码(在ini文件中存在)
shiro
认证流程:(掌握)
1
、subject(
主体)
请求认证,调用subject.login(token)
2
、SecurityManager(
安全管理器)
执行认证
3
、SecurityManager
通过ModularRealmAuthenticator
进行认证。
4
、ModularRealmAuthenticator
将token
传给realm
,realm
根据token
中用户信息从数据库查询用户信息(包括身份和凭证)
5
、realm
如果查询不到用户给ModularRealmAuthenticator
返回null
,ModularRealmAuthenticator
抛出异常(用户不存在)
6
、realm
如果查询到用户给ModularRealmAuthenticator
返回AuthenticationInfo(
认证信息)
7
、ModularRealmAuthenticator
拿着AuthenticationInfo(
认证信息)
去进行凭证(密码
)比对。如果一致则认证通过,如果不致抛出异常(凭证错误)。
subject
:主体