- 身份验证:一般需要提供如身份ID 等一些标识信息来表明登录者的身份,如提供email,用户名/密码来证明。
- 在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份:
- principals:身份,即主体的标识属性,可以是任何属性,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,但只有一个Primary principals,一般是用户名/邮箱/手机号。
- credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。
- 最常见的principals 和credentials 组合就是用户名/密码了
身份验证基本流程
- 1、收集用户身份/凭证,即如用户名/密码
- 2、调用Subject.login进行登录,如果失败将得到相应的AuthenticationException异常,根据异常提示用户错误信息;否则登录成功
- 3、创建自定义的Realm 类,继承org.apache.shiro.realm.AuthorizingRealm类,实现doGetAuthenticationInfo() 方法
身份验证示例
AuthenticationException
- 如果身份验证失败请捕获AuthenticationException或其子类
- 最好使用如“用户名/密码错误”而不是“用户名错误”/“密码错误”,防止一些恶意用户非法扫描帐号库;
来源:https://www.cnblogs.com/116970u/p/11175895.html