SpringMVC+shiro+ehCash整合

简介: 1.web.xml DelegatingFilterProxy就是一个对于servlet filter的代理,用这个类的好处主要是通过Spring容器来管理servlet filter的生命周期,还有就是如果filter中需要一些Spring容器的实例,可以通过spring直接注入,另外读取一些配置文件这些便利的操作都可以通过Spring来配置实现。

1.web.xml
DelegatingFilterProxy就是一个对于servlet filter的代理,用这个类的好处主要是通过Spring容器来管理servlet filter的生命周期,还有就是如果filter中需要一些Spring容器的实例,可以通过spring直接注入,另外读取一些配置文件这些便利的操作都可以通过Spring来配置实现。
在这里的作用是自动到Spring容器查找名字为shiroFilter(filter-name)的bean并把所有Filter的操作委托给它
image
2.beans
image
所有spring的请求都讲通过shiroFilter来处理。处理类是org.apache.shiro.spring.web.ShiroFilterFactoryBean其中一个重要的属性是securityManager
image
the SecurityManager is the heart of Shiro’s architecture,SecurityManager是Shiro体系的核心,登录,授权,session管理功能,缓存功能都是由SecurityManager来管理,相当于一个容器。
image
image

Ream主要用来处理登录以及授权,在登录的时候,通过subject的login方法来触发。这里也使用了验证码同样的缓存功能。这里使用的是构造器注入,构造器注入出了注入缓存参数外也注入了
image

image

数据库存储的是密文,登录的时候需要对登录密码进行加密,加密方式配置如下,加密后跟数据库存储的密码进行比对,如果错误多次半小时内不让登录,用ehcash缓存。
image

注意到类里面有一个afterPropertiesSet方法,这个方法的作用是在web应用启动时,IOC会创建RetryLimitCredentialsMatcher这个bean,这个bean创建完后,需要将ehcash被这个bean使用,于是将某个ehcash空间的引用变量赋值给这个bean里的一个map简直对,从而使得对这个键值对的修改都会对ehcash维护的map产生影响。因为他们实际上是同一个东西
image

shiro的相当多的数据都是存储在ehcash缓存里面的,shiro的缓存是通过cache Manager 来实现的,cache manager的作用是吧缓存设置为ehcash。w
image

shiro提供remenber me功能。用户登录后,服务端为用户生成一个Token,并放入客户端Cookie中。下次用户登录,服务端验证Cookie中的Token并自动登录
image

shiro提供会话的功能,提供session的curd,并且这里是用ehcashe来缓存会话信息
image
image
image

目录
相关文章
|
监控 数据可视化 关系型数据库
PostgreSQL主备库搭建
pg主备库的搭建,首先需在2个节点安装pg软件,然后依次在2个节点配置主备。 本文采用os为CentOS7.6,pg版本使用14.2,以下为详细部署步骤。
1399 0
|
Oracle Java 关系型数据库
java17的下载与安装
java17的下载与安装
2527 0
|
NoSQL 前端开发 Java
基于springboot的学生成绩在线管理系统(部署文档+数据库表结构文档)。Javaee项目,springboot项目.
基于springboot的学生成绩在线管理系统(部署文档+数据库表结构文档)。Javaee项目,springboot项目.
|
9月前
|
JSON JavaScript Java
使用JSONObject.getString()时报错:Cannot resolve method ‘getString‘ in ‘JSONObject‘,详解JSONObject三种库的用法
通过以上对比可以发现,虽然这三种库都可以操作 JSON 数据,但它们的功能设计和使用场景各不相同: • org.json.JSONObject 适合基础场景,方法直观易懂。 • org.json.simple.JSONObject 功能最简单,需要更多手动操作。 • cn.hutool.json.JSONObject 适合复杂项目,提供了更强的扩展能力。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
算法 Java 调度
【多线程面试题二十】、 如何实现互斥锁(mutex)?
这篇文章讨论了在Java中实现互斥锁(mutex)的两种方式:使用`synchronized`关键字进行块结构同步,以及使用`java.util.concurrent.locks.Lock`接口进行非块结构同步,后者提供了更灵活的同步机制和扩展性。
|
SQL 自然语言处理 API
|
JavaScript
js学习--制作选项卡
js学习--制作选项卡
118 4
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
177 3
|
前端开发 JavaScript
构建前端防腐策略问题之后端配合前端进行GraphQL改造变得不太现实的问题如何解决
构建前端防腐策略问题之后端配合前端进行GraphQL改造变得不太现实的问题如何解决
116 1
|
存储 SQL 机器学习/深度学习
数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系
这是在数据分析中常见的概念,下钻可以理解成增加维的层次,从而可以由粗粒度到细粒度来观察数据,比如对产品销售情况分析时,可以沿着时间维从年到月到日更细粒度的观察数据。从年的维度可以下钻到月的维度、日的维度等。
数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系