上面图片中,根据序号,其实我们大概能猜出里shiro的认证流程:
- Subject进行login操作,参数是封装了用户信息的token
- Security Manager进行登录操作
- Security Manager委托给Authenticator进行认证逻辑处理
- 调用AuthenticationStrategy进行多Realm身份验证
- 调用对应Realm进行登录校验,认证成功则返回用户属性,失败则抛出对应异常
我们从login方法开始debug一下流程,用简要方式追踪shiro源码的认证逻辑:
ok,一条线下来,从login到委托给authenticator,再最后调用realm的doGetAuthenticationInfo方法。
所以,从源码上来看,如果要实现shiro的认证逻辑,至少要准备一个Realm组件、和初始化securityManager组件。
常见异常
- DisabledAccountException(禁用的帐号)
- LockedAccountException(锁定的帐号)
- UnknownAccountException(错误的帐号)
- ExcessiveAttemptsException(登录失败次数过多)
- IncorrectCredentialsException (错误的凭证)
- ExpiredCredentialsException(过期的凭证)