Shiro身份验证

  • 身份验证:一般需要提供如身份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