shiro源码_基于Redis的shiro集中式缓存解决方案源码免费分享
源码获取:私信回复【源码】即可获取到
Shiro-Redis
Shiro集成Redis的适配器,为解决shiro-ehcache不利于集群而打造的集中式缓存方案。
Maven坐标
org.iherus.shiro shiro-redis 2.2.0
更新日志
v2.2.0:
Change Log 1)加入scope策略.
v2.1.0:
Change Log 1)修复bug. 2)增强兼容性 3)发布shiro-redis-spring-boot-web-starter
v2.0.0:
Note 此版本为重构版本,API不兼容v1.x。
Change Log 1)在v1.x仅支持单机模式的基础上,新增了对 哨兵(Sentinel)、集群(Cluster)模式的支持。 2)支持Lettuce客户端、Redisson客户端 3)兼容Spring-data-redis 4)非集群模式,可设置独立的database 5)支持设置缓存失效时间 6)优化性能 7)新增RedisSessionDAO用于降低请求Redis的频率
Shiro-Redis使用说明
1、基于ini的使用方式
[main]#定义凭证匹配器credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher#散列算法credentialsMatcher.hashAlgorithmName=MD5#散列次数credentialsMatcher.hashIterations=2#定义缓存池配置poolConfig=redis.clients.jedis.JedisPoolConfigpoolConfig.minIdle=3poolConfig.maxIdle=10poolConfig.maxWaitMillis=1500poolConfig.maxTotal=100#定义连接配置## Standaloneconfiguration=org.iherus.shiro.cache.redis.config.RedisStandaloneConfigurationconfiguration.host=127.0.0.1configuration.port=6379configuration.database=2#configuration.password=## Sentinel#configuration=org.iherus.shiro.cache.redis.config.RedisSentinelConfiguration#configuration.masterName=mymaster#configuration.sentinelsFromText=127.0.0.1:56379,127.0.0.1:56479,127.0.0.1:56579#configuration.database=2#configuration.password=## Cluster#configuration=org.iherus.shiro.cache.redis.config.RedisClusterConfiguration#configuration.clusterNodesFromText=127.0.0.1:16379, 127.0.0.1:16380, 127.0.0.1:16381, 127.0.0.1:16382, 127.0.0.1:16383, 127.0.0.1:16384#configuration.password=#定义连接工厂## JedisconnectionFactory=org.iherus.shiro.cache.redis.connection.jedis.JedisConnectionFactoryconnectionFactory.poolConfig=$poolConfigconnectionFactory.configuration=$configuration#connectionFactory.clientName=#connectionFactory.connectTimeoutMillis=#connectionFactory.soTimeoutMillis=## Lettuce#connectionFactory=org.iherus.shiro.cache.redis.connection.lettuce.LettuceConnectionFactory#connectionFactory.poolConfig=$poolConfig#connectionFactory.configuration=$configuration#connectionFactory.clientName=#connectionFactory.timeoutMillis=## Redisson#connectionFactory=org.iherus.shiro.cache.redis.connection.redisson.RedissonConnectionFactory#connectionFactory.configuration=$configuration#connectionFactory.clientName=#connectionFactory.connectTimeoutMillis=#connectionFactory.soTimeoutMillis=#定义缓存管理器cacheManager=org.iherus.shiro.cache.redis.RedisCacheManagercacheManager.connectionFactory=$connectionFactorycacheManager.expirationMillis=900000cacheManager.keyPrefix=shiro:test:cache:#cacheManager.scanBatchSize=3000#cacheManager.deleteBatchSize=5000#cacheManager.fetchBatchSize=50#cacheManager.database=5#将凭证匹配器设置到realmcustomRealm=org.iherus.shiro.tester.CustomRealmcustomRealm.credentialsMatcher=$credentialsMatchersecurityManager.realms=$customRealmsecurityManager.cacheManager=$cacheManager
详细测试代码请看:src/test/java/org/iherus/shiro /tester/SimpleCacheTest.java
2、Spring集成的方式
3、关于缓存key的特别说明
针对非 byte[] 和 String 类型的缓存key,采用的是生成MD5作为key的策略,这样就要求AuthorizingRealm#doGetAuthenticationInfo返回的[PrincipalCollection principals]必须是一成不变的,这样一来,如果后续需要动态修改principals的属性,则会导致缓存key的变化。
所以,建议重写这两个方法来应对这种变化:
1)AuthorizingRealm #getAuthorizationCacheKey(PrincipalCollection principals) 2)AuthorizingRealm #getAuthenticationCacheKey(PrincipalCollection principals)
eg:
/** * 建议重写此方法,提供唯一的缓存Key */@Overrideprotected Object getAuthorizationCacheKey(PrincipalCollection principals) {return this.getAuthenticationCacheKey(principals);}/** * 建议重写此方法,提供唯一的缓存Key */@SuppressWarnings("unchecked")@Overrideprotected Object getAuthenticationCacheKey(PrincipalCollection principals) {StringBuilder sb = new StringBuilder();principals.forEach(principal -> {sb.append(((User) principal).getId());});return sb.toString();}
更多正在补充中。。。。。
源码获取:私信回复【源码】即可获取到
shiro源码_基于Redis的shiro集中式缓存解决方案源码免费分享相关推荐
- java项目新东方在线源码_基于JSP的在线考试系统-JavaWeb项目-有源码
系统简介: 网络考试系统主要用于实现高校在线考试,基本功能包括:自动组卷.试卷发布.试卷批阅.试卷成绩统计等.本系统结构如下: (1)学生端: 登录模块:登录功能: 网络考试模块:可参加考试,并查看考 ...
- app商城源码_海量的SpringBoot和SSM项目【附带源码+视频教程】快速成为全栈
为了帮助更多的小伙伴进行项目的锻炼,孟哥整理较多的实战项目,包括SSM.Springboot.Springcloud.小程序等. 各种项目还在不断的更新中--仅限制学习使用,若有侵权,请联系删除. 点 ...
- CentOS7下安装Redis伪集群(基于Redis官方Cluster集群模式版本redis-5.0.10)
文章目录 Redis简介 什么是redis redis的优点 Redis集群都有哪些模式 主从复制(Master-Slave Replication) 哨兵模式(Sentinel) Redis官方 C ...
- 探讨下如何更好的使用缓存 —— 集中式缓存Redis的BitMap存储、管道与事务、以及与本地缓存一起构建多级缓存
大家好,又见面了. 通过前面的文章,我们一起剖析了Guava Cache.Caffeine.Ehcache等本地缓存框架的原理与使用场景,也一同领略了以Redis为代表的集中式缓存在分布式高并发场景下 ...
- Spring Boot 2.x基础教程:使用集中式缓存Redis
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 之前我们介绍了两种进程内缓存的用法,包括Spring B ...
- Spring Boot中的缓存支持(二)使用Redis做集中式缓存
上一篇介绍了在Spring Boot中如何引入缓存.缓存注解的使用.以及EhCache的整合. 虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各 ...
- Java基于Redis实现“附近的人”(含源码下载)
"附近的人"在社交类APP已成为标配的功能,Low一点的实现方式可以把坐标存至关系型数据库,通过计算的坐标点距离实现,这种计算可行但计算速度远不及内存操作级别的NoSql数据库. ...
- Spring boot基于redis实现附近的人(附源码下载)
此文章是针对去年写的Java基于Redis实现"附近的人 进行业务优化! 核心源码 public class NearbyPO {@NotNull(message = "id值不能 ...
- java招投标网站源码_基于jsp的招标系统-JavaEE实现招标系统 - java项目源码
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的招标系统, 该项目可用各类java课程设计大作业中, 招标系统的系统架构分为前后台两部分, 最终实现在线上进行招标 ...
- php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码
* 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...
最新文章
- Day 11 权力核金钱是成功得标志吗
- 深入理解signed、unsigned 关键字
- supmap java_SuperMap iServerJava安装与出图必读之Windows操作系统篇
- gc日志一般关注什么_Java架构师必懂的GC日志知识
- 为什么a*算法采用哈密尔顿距离作为启发函数比不在位数为启发函数的性能要好?_【论文研读】路径规划中的Hybrid A*算法...
- JS之返回字符串最后出现的位置lastIndexOf
- 物联网初步之电阻性电路分析 第三部分 电路分析方法和电路原理
- Unity手机摇一摇
- 安卓PHP maker汉化,android 百度地图marker添加自定义视图
- Python练习:快乐的数字
- Python Appium 元素定位方法简单介绍
- python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)
- 关于微信小程序下拉刷新、上拉触底方法的实现
- npm 安装ionic
- 从FrameDebugger看Unity渲染
- 数据赋能,助力新零售数字化突围
- oracle 11g 导入\导出(expdp impdp)详解之导入
- 【拓展】编程语言中的“前浪”和“后浪”
- 【linux系列】统计Linux系统缺页的次数
- 依靠一个激光雷达实现导航小车的方法
热门文章
- 一名技术leader的工作随笔
- 5G时代下的移动边缘计算(MEC)探索系列之四
- 毕设题目:Matlab电子琴
- 【图像去噪】基于matlab邻域+中值滤波图像去噪【含Matlab源码 961期】
- 【缺陷检测】基于matlab形态学水果蔬菜缺陷检测【含Matlab源码 820期】
- 【电路仿真】基于simulink全数字锁相环设计【含Matlab源码 340期】
- 递归神经网络/_递归神经网络
- postgresql保存图片_第一章 PostgreSQL中的数据库集群、数据库和表
- 计算器: 请输入两个数和一个符号,完成两个数的+ - * / % // **
- 抓包教程_最简单的Wireshark抓包TCP/UDP新手5步教程(宽带故障运维必备)