Shiro学习笔记之(四)Apache Shiro 认证(登陆)
Shiro学习笔记之(三)Apache Shiro SecurityMananger配置
一、概述
认证就是验证用户身份的过程,这里一般是提交用户身份信息(Principals)和凭证信息(Credentials)。Principals是Subject唯一标识属性,用来证明Subject,可以理解为身份证号码。Credentials,通俗理解密码,但是不局限于密码,指纹,视网膜,证书都可以。
二、认证过程
认证过程大概分为三个步骤:搜集Subjects提交的Principals和Credentials--验证--通过验证结果觉得是否登陆访问。
login方法执行完未抛异常,代表认证通过,登陆成功。
三、认证配置
3.1Authenticator(认证器)
SecurityManager 实现默认使用一个ModularRealmAuthenticator实例,支持单个Realm或多个Realm。ModularRealmAuthenticator会依据认证策略来适配Realm,单个Realm直接采用。
也可以使用自定义的认证器,在[main]selection中配置,如下如
3.2 AuthenticationStrategy(认证策略)
在配置了多个Realm时,认证器就会依据AuthenticationStrategy组件来认证。Shiro主要有三种认证策略的实现:
a.AtLeastOneSuccessfulStrategy ,至少一个Reaml验证成功
b.FirstSuccessfulStrategy 第一个验证成功就视为成功
c.AllSuccessfulStrategy 全部都要验证通过。
默认是AtLeastOneSuccessfulStrategy ,可以通过配置文件指定策略
3.3 RealmAuthentication Order(Realm认证顺序)
在认证策略中,Realm的认证顺序对认证还是有影响的。ModularRealmAuthenticator读取SecurityManager里面的Realm,使用遍历集合的方式进行发送token进行认证
a.隐式排列 如果是ini配置文件,按照定义的顺序依次处理
即按照 a,b,c的顺序处理
b.显示排列
使用securityManager.realms配置顺序。
按照c,b,a顺序执行,由此可见,隐式排列也是一种特殊的显示排列。
四、登出(注销)
执行subject.logout();方法登出,session会失效,RemenberMe cookie也会被删除。
下一篇 Shiro学习笔记之(五)Apache Shiro 授权