总的参考文档:http://shiro.apache.org/reference.html
本文参考文档:http://shiro.apache.org/authentication.html
1、概念
本文介绍Shiro功能特性中的身份认证部分,上图中绿色的一块。身份认证就是根据用户提供的身份以及凭证验证它的合法性。有两个概念:
- Principals:用户的身份,简单理解就是用户名。
- Credentials:简单理解就是用户的密码,或者其它能证明用户身份的东西。
2、Login
前文说过,在具体的应用中用Subject代表一个用户,认证的过程可以分成三步:
- 收集用户Principal与Credential。
- Subject将收集到的Principal与Credential提交给SecurityManager进行身份验证。
- 确认验证结果,是否通过身份验证。
2.1.收集用户Principal与Credential
示例代码:
//Example using most common scenario of username/password pair:
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
//"Remember Me" built-in:
token.setRememberMe(true);
首先username与password怎么来的,代码中并没有写。实际上Shiro并不关心它们是怎么来的,常见的情况是用户通过浏览器提交了表单,应用从表单中拿到的数据。拿到数据后,将它们转换成UsernamePasswordToken实例。UsernamePasswordToken是 org.apache.shiro.authc.AuthenticationToken接口的具体实现。实际上这个UsernamePasswordToken实例最终会被传递给Realm,Rea