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 授权






猜你喜欢

转载自blog.csdn.net/qq_39527230/article/details/80770069