`

08_shrio加密

阅读更多
1 准备数据库的数据:通过使用数据库的方式实现权限的管理。
t_user

T_role

T_user_role


T_security

T_role_security


2 在验证和授权时候注意的问题,请看下图:

//以上权限已经基本完成,下面解决密码的问题

1 在添加用户的时候加密,在加密的时候给它加入的作料,这个作料我们单独准备一个字段。
如下:


@Override
public void save(Userbean user) {
// TODO Auto-generated method stub
//1)保存到用户表
  Md5Hash md5=new Md5Hash(user.getPassword(),"hd",1);
  user.setSalt("hd");//当然这个作料可以使用一个随机数,每个用户的作料(我们也可以叫盐巴)可以使用不一样,这样更加安全
  user.setPassword(md5.toString());
userMapper.insertSelective(user);
//2)保存到中间表
List<Integer> rids=user.getRids();
if(rids!=null && rids.size()>0){
for(Integer rid:rids){
userMapper.insertUidAndRid(user.getUserid(),rid);
}
}
}
2 上面在用户添加的时候加密,当然在登录校验的时候也得把登录的用户信息加密,否则与数据库的密码不一致,无法登录

注意看这个图片: 连个参数user.getpassword()是已经加密好的 ,第三个参数是取出加密的作料,然后在到对象里面取password 这个属性值按照配置文件的条件加密,然后在做与第二个参数的判断。
如下配置文件的加密方式:
<!-- 解读:使用md5加密,使用CustomRealm.java里面方法的第三个参数的作料进行加密,加密1次 -->

<!-- 将凭证匹配器设置到realm中,realm按照凭证匹配器的要求进行散列 -->
<property name="credentialsMatcher" ref="credentialsMatcher"/>
</bean>
<!-- 凭证匹配器 -->
<!-- 解读:使用md5加密,使用CustomRealm.java里面方法的第三个参数的作料进行加密,加密1次 -->
<bean id="credentialsMatcher"
class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
<property name="hashAlgorithmName" value="md5" />
<property name="hashIterations" value="1" />
</bean>


3 如果已经加好加密登录功能,我们在登录的时候数据库里面的数据必须是已经加密的,但是现在没有加密,所有我们无法登录,这时候我们只能手动给数据库的密码加密,使用main方法来实现,如下:
这个是密码为123 、作料为:hd 、加密1次 后的密码
public static void main(String[] args) {

Md5Hash md5 = new Md5Hash("123","hd",1);
System.out.println(md5);
}


//---------------------------------
Shiro对异常的处理:applicationContext.xml
UnauthorizedException 没有权限异常
UnauthenticatedException 登录验证异常
<!-- shiro为集成springMvc 拦截异常-->
<bean
  class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  <property name="exceptionMappings">
   <props>
    <!-- 这里你可以根据需要定义N多个错误异常转发 -->
    <prop key="org.apache.shiro.authz.UnauthorizedException">redirect:/refuse.jsp</prop>
    <prop key="org.apache.shiro.authz.UnauthenticatedException">redirect:/login.jsp</prop>
    <prop key="java.lang.IllegalArgumentException">/error.jsp</prop>  <!-- 参数错误(bizError.jsp) -->
    <prop key="java.lang.Exception">/error.jsp</prop>  <!-- 其他错误为'未定义错误'(unknowError.jsp) -->
   </props>
  </property>
</bean>

完成!
详细请看源码。


分享到:
评论

相关推荐

    尚硅谷Shiro视频教程

    尚硅谷_Shiro_认证思路分析 · 08.尚硅谷_Shiro_实现认证流程 · 09.尚硅谷_Shiro_实现认证 Realm · 10.尚硅谷_Shiro_密码的比对 · 11.尚硅谷_Shiro_密码的MD5加密 · 12. 尚硅谷_Shiro_密码的MD5盐值加密 ...

    Apache_Shiro参考手册中文版.zip

    Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应 ...

    springboot_shiro.zip

    使用SpringBoot 整合 mybatis Shiro 实现用户名密码登录,密码采用MD5加密方式 查看相关博客 可以看看 https://blog.csdn.net/qq_44136551/article/details/107175999

    Apache_Shiro开发文档及JAVA开发实例

    Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。这是一个JAVA开发实例及开发文档。

    aoache_shiro参考手册

    SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。

    jfinal_mongodb_shiro:基于Jfinal实现非关系型数据库整合Shiro

    JFinal_MongoDB_Shiro_Demo部署* 配置 jfinal.properties* 运行 clean compile jetty:run* 访问 http://localhost/初始用户* 访问任意地址即可初始化用户 * 管理员: admin 密码123456 * 普通用户: user 密码123456...

    Apache_Shiro

    Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应 ...

    Apache Shiro中文开发文档.pdf

    Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架...

    springboot与shiro密码加密,mybatis,redis的整合项目

    后台在通过shiro进行授权和认证,分为普通用户和管理员两种角色,普通用户只能访问商品,管理员可以访问商品和用户界面的基础上加入了密码加密。登录时利用了redis缓存。里面包含数据库文件希望能帮助到大家学习。

    高版本AES-GCM模式加密的Shiro漏洞利用1

    高版本AES-GCM模式加密的Shiro漏洞利用1

    shiro安全管理框架之Cryptography.docx

    Shiro提供了base64和16进制字符串编码/解码的API支持,方便一些编码解码操作。Shiro内部的一些数据的存储/表示都使用了base64和16进制字符串。 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般...

    学习shiro中的加密程序

    此代码用eclipse编写开发,是为了学习入门shiro安全框架而编写的,用于学习和测试shiro的中的加密机制

    Shiro 视频教程+源码+课件

    内容涵盖 Shiro 认证、加密、授权、安全标签、安全注解、会话管理、缓存、Rememberme 等 JavaEE 企业级开发的核心技术。视频讲授过程中通过分析源代码使学员知其然更知其所以然。 【课程内容】 第一章 问候 Shiro ...

    Shiro入门实例

    Shiro入门实例

    shiro_attack_1.5.zip

    shiro反序列化利用工具,支持shiro大于1.2.4的aes加密的反序列号

    shiro登陆身份认证和权限管理 密码加密

    shiro登陆,shiro登陆身份认证和权限管理 密码加密。自己写的demo。实用。希望大家多多支持。谢谢大家

    SpringBoot+Shiro学习之密码加密和登录失败次数限制示例

    本篇文章主要介绍了SpringBoot+Shiro学习之密码加密和登录失败次数限制示例,可以限制登陆次数,有兴趣的同学可以了解一下。

    shiro_1.4.2.rar

    Apach Shiro官方披露其cookie持久化参数rememberMe加密算法存在漏洞,可被Padding Oracle攻击,攻击者利用Padding Oracle攻击手段可构造恶意的rememberMe值,绕过加密算法验证,执行java反序列化操作,最终可导致...

    shiro 1.4.1.rar

    Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多...Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。这不就是我们想要的嘛,而且 Shiro 的 API 也是非常简单.

    Shiro框架三部曲

    Shiro是Apache从JSecret项目演变而来的,该框架实现了:用户登录、认证、授权和权限管理操作的完整控制流程。Shiro最早的名字是JSecurity,后来...用于简洁地处理身份验证,授权,企业多个系统会话管理,加密服务等。

Global site tag (gtag.js) - Google Analytics