在前面一节《Shiro在Web环境下集成Spring的大致工作流程》的最后一步中提到由Shiro完整密码比对。

那么具体是怎么工作的?

1,既然shiro会把密码来进行比对,当然会调用 UserNamePasswordkToken 中的 getPassword() 方法了。在该方法中打上断点,往前跟踪一下即可。
     

2,开启debug模式,跟踪发现 org.apache.shiro.authc.credential.SimpleCredentialsMatcher 类进行密码的比对
     

3,继续跟踪,发现我们自定义Realm的父类方法调用了 CrendebtialsMatcher组件 进行密码比对
     

CrendentialsMatcher组件(凭证匹配器)作用
     1,用来进行密码比对。
     2,用来对密码进行加密。
     3,shiro提供了该组件接口的很多实现类,用于不同类型的密码加密。
          常用的加密实现类为:HashedCrendentialsMatcher
     4,替换当前 Realm 的 crendentialsMatcher 属性,直接使用 HasedCrendentialsMatcher 对象,并设置加密算法即可。
 
结论:
     ①通过 AuthenticatingRealm 的 CrendentialsMatcher 属性来进行的密码的比对
     ②指定具体的 CrendentialsMatcher 接口的实现类来设置加密算法,盐值和循环加密次数
     ③如果两个用户拥有相同的原始密码,那么加密后的数据也是一样的,这还是有点安全隐患的,所以盐值最好设置为一个用户的唯一值(一般采用用户名)。
     ④在自定义Realm的认证方法(doAuthenticationInfo方法),返回的SimpeAuthenticationInfo对象时,需要采用带有ByteSource参数的构造函数来构建对象。
          ByteSource对象可以采用ByteSource.Util.byte(String UserID)获取;
     ⑤使用 new SimpleHash(hashAlgorithmName,salt,hashIterations); 来计算加盐后的密码值。

Shiro认证时的密码比对的更多相关文章

  1. Apache Shiro 使用手册(二)Shiro 认证

    认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的"实体/凭证"组合便是&quo ...

  2. Apache Shiro 认证过程

    3.1.1    示例 Shiro验证Subjects 的过程中,可以分解成三个不同的步骤: 1. 收集Subjects 提交的Principals(身份)和Credentials(凭证): 2. 提 ...

  3. 无状态shiro认证组件(禁用默认session)

    准备内容 简单的shiro无状态认证 无状态认证拦截器 import com.hjzgg.stateless.shiroSimpleWeb.Constants; import com.hjzgg.st ...

  4. 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

    原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...

  5. frame shiro 认证示例及原理简述

    shiro 认证流程 1.创建一个 javaSE 的maven项目(quickstart),并添加依赖 <dependency> <groupId>junit</grou ...

  6. Shiro认证的另一种方式

    今天在学习shiro的时候使用另一种shiro验证的方式. 总体的思路是: (1)先在自己的方法中进行身份的验证以及给出提示信息.(前提是将自己的验证方法设为匿名可访问) (2)当验证成功之后到Shi ...

  7. 将 Shiro 作为应用的权限基础 二:shiro 认证

    认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的“实体/凭证”组合便是“用户名/密码”组合. 一. ...

  8. springmvc+shiro认证框架配置

    1,在web.xml中配置fiter,如下所示 <!-- shiro的filter --> <!-- shiro过虑器,DelegatingFilterProxy通过代理模式将spr ...

  9. Apache Shiro 使用手册(二)Shiro 认证(转发:http://kdboy.iteye.com/blog/1154652)

    认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的“实体/凭证”组合便是“用户名/密码”组合. 一. ...

随机推荐

  1. 论文阅读计划1(Benchmarking Streaming Computation Engines: Storm, Flink and Spark Streaming & An Enforcement of Real Time Scheduling in Spark Streaming & StyleBank: An Explicit Representation for Neural Ima)

    Benchmarking Streaming Computation Engines: Storm, Flink and Spark Streaming[1] 简介:雅虎发布的一份各种流处理引擎的基准 ...

  2. PRML Chapter4

    超平面(hyperplane) 超平面:超平面是n维欧氏空间中余维度等于一的线性子空间,也就是说必须是(n-1)维度.这是平面中的直线.三维空间中平面的推广(n大于3才被称为"超" ...

  3. Office Add-in Model 简介

    原文地址:http://simpeng.net/office-add-in/office-add-in-model-%e7%ae%80%e4%bb%8b/ , 为了本博客内容的完整性,转载至此. Of ...

  4. VC控件自绘制三步曲

    http://blog.csdn.net/lijie45655/article/details/6362441 实现自定义绘制的三步曲 既然您已经了解了绘制控件可用的各种选项(包括使用自定义绘制的好处 ...

  5. Controls 属性与继承 TShape 类的小练习(使用TShape可以解决很多图形问题)

    本例效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, ...

  6. 文件夹管理工具(MVC+zTree+layer)

    文件夹管理工具(MVC+zTree+layer)(附源码)   写在前 之前写了一篇关于 文件夹与文件的操作的文章  操作文件方法简单总结(File,Directory,StreamReader,St ...

  7. nginx(一) nginx详解

    nginx是一个被广泛使用的集群架构组件,我们有必要对它有足够的了解.下面将先认识nginx:包括应用场景.nginx基本架构.功能特性.并发模型以及配置说明,最后我们再总结下,为什么选择nginx的 ...

  8. Spring Cloud微服务简介

    概述 Spring Cloud给开发者提供一套按照一定套路快速开发分布式工具.它为微服务架构中涉及**配置管理,服务治理,断路器,智能路由,微代理,控制总线,全局锁,分布式会话和集群状态等操作提供了一 ...

  9. 线性表List

    数组array是基本的数据结构,但它的功能有限,线性表list可以认为是扩展了功能的数组.可以自动调整大小.添加和删除元素不需要其他元素移位. 根据指针数量和指向的不同,线性表分为单向链表.双向链表和 ...

  10. app兼容测试选择哪些机型才够全面呢?