在学习此小节之前您可能还需要学习:

(39.1) Spring Boot Shiro权限管理【从零开始学Spring Boot】

http://412887952-qq-com.iteye.com/blog/2299732

(39.2). Spring Boot Shiro权限管理【从零开始学Spring Boot】

http://412887952-qq-com.iteye.com/blog/2299777

相对于上一小节这个就比较简单了。

主要分这么几个步骤:在pom.xml中加入缓存依赖;注入缓存;

(a) 在pom.xml文件中加入依赖:

<!-- shiro ehcache -->

<dependency>

<groupId>org.apache.shiro</groupId>

<artifactId>shiro-ehcache</artifactId>

<version>1.2.2</version>

</dependency>

<!--

包含支持UI模版(Velocity,FreeMarker,JasperReports),

邮件服务,

脚本服务(JRuby),

缓存Cache(EHCache),

任务计划Scheduling(uartz)。

-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

</dependency>

(b)注入缓存

在com.kfit.config.shiro.ShiroConfiguration中加入如下方法:

/**

* shiro缓存管理器;

* 需要注入对应的其它的实体类中:

* 1、安全管理器:securityManager

* 可见securityManager是整个shiro的核心;

* @return

*/

@Bean

public EhCacheManager ehCacheManager(){

System.out.println("ShiroConfiguration.getEhCacheManager()");

EhCacheManager cacheManager = new EhCacheManager();

cacheManager.setCacheManagerConfigFile("classpath:config/ehcache-shiro.xml");

returncacheManager;

}

将缓存对象注入到SecurityManager中:

@Bean

public SecurityManager securityManager(){

DefaultWebSecurityManager securityManager =  new DefaultWebSecurityManager();

//设置realm.

securityManager.setRealm(myShiroRealm());

//注入缓存管理器;

securityManager.setCacheManager(ehCacheManager());//这个如果执行多次,也是同样的一个对象;

returnsecurityManager;

}

(c)添加缓存配置文件:

在src/main/resouces/config添加ehcache-shiro.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<ehcache name="es">

<diskStore path="java.io.tmpdir"/>

<!--

name:缓存名称。

maxElementsInMemory:缓存最大数目

maxElementsOnDisk:硬盘最大缓存个数。

eternal:对象是否永久有效,一但设置了,timeout将不起作用。

overflowToDisk:是否保存到磁盘,当系统当机时

timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。

timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。

diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.

diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。

diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。

memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。

clearOnFlush:内存数量最大时是否清除。

memoryStoreEvictionPolicy:

Ehcache的三种清空策略;

FIFO,first in first out,这个是大家最熟的,先进先出。

LFU, Less Frequently Used,就是上面例子中使用的策略,直白一点就是讲一直以来最少被使用的。如上面所讲,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。

LRU,Least Recently Used,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

-->

<defaultCache

maxElementsInMemory="10000"

eternal="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

overflowToDisk="false"

diskPersistent="false"

diskExpiryThreadIntervalSeconds="120"

/>

<!-- 登录记录缓存锁定10分钟 -->

<cache name="passwordRetryCache"

maxEntriesLocalHeap="2000"

eternal="false"

timeToIdleSeconds="3600"

timeToLiveSeconds="0"

overflowToDisk="false"

statistics="true">

</cache>

</ehcache>

在配置文件上已经有很详细的解释了,所以这里就过多介绍ehcache的配置了。

运行程序访问:http://127.0.0.1:8080/userInfo/userAdd

查看控制台的打印信息:

权限配置-->MyShiroRealm.doGetAuthorizationInfo()

这个信息就只打印一次了,说明我们的缓存生效了。

Spring Boot 系列博客】

54. spring boot日志升级篇—logback【从零开始学Spring Boot】

52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】

51. spring boot属性文件之多环境配置【从零开始学Spring Boot】

50. Spring Boot日志升级篇—log4j【从零开始学Spring Boot】

49. spring boot日志升级篇—理论【从零开始学Spring Boot】

48. spring boot单元测试restfull API【从零开始学Spring Boot】

47. Spring Boot发送邮件【从零开始学Spring Boot】

46. Spring Boot中使用AOP统一处理Web请求日志

45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】

43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

42. Spring Boot多数据源【从零开始学Spring Boot】

41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】

40. springboot + devtools(热部署)【从零开始学Spring Boot】

39.4 Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.3 Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.2. Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.1 Spring Boot Shiro权限管理【从零开始学Spring Boot】

38 Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

37 Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

36 Spring Boot Cache理论篇【从零开始学Spring Boot】

35 Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

34Spring Boot的启动器Starter详解【从零开始学Spring Boot】

33 Spring Boot 监控和管理生产环境【从零开始学Spring Boot】

32 Spring Boot使用@SpringBootApplication注解【从零开始学Spring Boot】

31 Spring Boot导入XML配置【从零开始学Spring Boot】

更多查看博客: http://412887952-qq-com.iteye.com/

转载于:https://www.cnblogs.com/hehehaha/p/6147101.html

(39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】相关推荐

  1. 39 Spring Boot Shiro权限管理【从零开始学Spring Boot】

    [视频 & 交流平台] à SpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008& ...

  2. Spring Boot Shiro 权限管理

    Spring Boot Shiro 权限管理 标签: springshiro 2016-01-14 23:44 94587人阅读 评论(60) 收藏 举报 本来是打算接着写关于数据库方面,集成MyBa ...

  3. Spring Boot Shiro权限管理

    转:http://412887952-qq-com.iteye.com/blog/2299777 (1). Shiro简单介绍 Shiro是Apache下的一个开源项目,我们称之为Apache Shi ...

  4. spring整合shiro权限管理与数据库设计

    之前的文章中我们完成了基础框架的搭建,现在基本上所有的后台系统都逃不过权限管理这一块,这算是一个刚需了.现在我们来集成shiro来达到颗粒化权限管理,也就是从连接菜单到页面功能按钮,都进行权限都验证, ...

  5. Spring Boot Shiro权限管理--自定义 FormAuthenticationFilter验证码整合

    思路 shiro使用FormAuthenticationFilter进行表单认证,验证校验的功能应该加在FormAuthenticationFilter中,在认证之前进行验证码校验. 需要写FormA ...

  6. Spring +mybatisplus+shiro权限管理集成整合

    一.Apache Shiro是一个功能强大.灵活的,开源的安全框架.它可以干净利落地处理身份验证.授权.企业会话管理和加密. Shiro能做什么呢? 验证用户身份 用户访问权限控制,比如:1.判断用户 ...

  7. (11)Spring Boot配置ContextPath【从零开始学Spring Boot】

    Spring boot默认是/ ,这样直接通过http://ip:port/就可以访问到index页面,如果要修改为http://ip:port/path/ 访问的话,那么需要在Application ...

  8. (10)Spring Boot修改端口号【从零开始学Spring Boot】

    Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 常用配置: #### ...

  9. 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean  就是我们定义的bean无法进行注入,那到底是什 ...

最新文章

  1. SharePoint 2013的100个新功能之网站管理(二)
  2. Flex/Flash Builder里实用但被忽略的编译参数
  3. 初步了解Linux创建文件系统命令
  4. oracle的导出参数statistic,使用expdp导出时评估所需存储容量大小
  5. lambda ::_您无法从这里到达那里:Netlify Lambda和Firebase如何使我陷入无服务器的死胡同
  6. 理解矩阵背后的现实意义
  7. UIImageView 响应UIButton的点击事件
  8. linux 异步信号的同步处理方式
  9. SQL Server 2008文件与文件组的关系
  10. html表格之个人简历
  11. PageRank算法在社交网络上的应用
  12. Python常用快捷键整理
  13. 一起来Fit TDMA over WiFi
  14. 突发:史蒂芬·霍金去世,享年76岁!
  15. bootloader学习笔记---第二篇
  16. Android Studio Git教程
  17. python登陆成功页面跳转_Python QT由登陆界面到主界面
  18. NLP机器阅读理解:四大任务及相应数据集、比赛
  19. kubeadm方式搭建k8s集群
  20. 分支函数c语言,C语言练习题2(分支结构 循环结构 数组 函数2009-2012二级真题 ).doc...

热门文章

  1. Zend Framework数据库操作(1)
  2. 实例说明扩展JQuery方式
  3. hdu1435 稳定婚姻问题
  4. hdu2196 树形DP
  5. 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )
  6. 【Android 逆向】函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )
  7. 【OpenGL】四、Visual Studio 2019 配置 GitHub ( 从 GitHub 上克隆项目 )
  8. 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频采样数据 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
  9. (五) 定点迭代法求根
  10. C指针笔试题,蛋疼的多重指针运算,谭浩强的阴影