`

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

阅读更多

 à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

 

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

 

 

(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模版(VelocityFreeMarkerJasperReports),

           邮件服务,

           脚本服务(JRuby)

           缓存CacheEHCache),

           任务计划Schedulinguartz)。

        -->

       <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的三种清空策略;

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

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

            LRULeast 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()

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

  

 

【视频&交流平台】

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

à Spring Boot交流平台

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

 

 ======================================

Spring Boot Shiro视频实战篇【已更新】

======================================

 

适合人群

有Spring Boot基础的人群。

 

使用技术

(1)spring boot(整合框架)

(2)spring mvc

(3)spring data jpa(持久化操作)

(4)shiro(安全框架)

(5)thymeleaf(模板引擎)

(6)ehcache(缓存管理)

(7)mysql(数据库)

(8)js/css/img(静态资源使用)

9kaptcha(验证码库)

 

课程目录

1. Spring Boot Shiro介绍

 

2. Spring Boot 搭建无Shiro的框架

 

3. Spring Boot Shiro拦截

 

4. Spring Boot Shiro身份认证准备工作

 

5. Spring Boot Shiro身份认证

 

6. Spring Boot Shiro权限控制

 

7. Spring Boot Shiro缓存

 

8. Spring Boot Shiro记住密码

 

9. Spring Boot Shiro登录成功之后下载favicon.ico

 

10. Spring Boot 在thymeleaf使用shiro标签

 

11. Spring Boot Shiro密码加密算法

 

12.Spring Boot Shiro使用JS-CSS-IMG

 

13. Spring Boot Shiro限制登录尝试次数

 

14.Spring Boot Shiro 验证码

分享到:
评论
8 楼 bingyu_liu 2017-02-10  
bingyu_liu 写道
楼主您好,按照您的教程,为shiro添加缓存成功了。但出现一个新问题,如果给Spring boot(1.4.3)添加热部署,项目就会报以下错误:
Caused by: net.sf.ehcache.CacheException: Another CacheManager with same name 'springbootcache' already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
----------------------------
请问楼主这个该怎样解决?


这个问题解决了!按如下方法:
1、在ShiroConfiguration中添加如下bean,用它来管理EhCacheManager的生命周期
@Bean(name = "lifecycleBeanPostProcessor")
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
logger.info("ShiroConfiguration--lifecycleBeanPostProcessor");
return new LifecycleBeanPostProcessor();
}
2、在EhCacheManager 上添加如下信息:@DependsOn("lifecycleBeanPostProcessor")

@Bean
@DependsOn("lifecycleBeanPostProcessor")
public EhCacheManager shiroEhcacheManager() {
logger.info("ShiroConfiguration--ehCacheManager");

EhCacheManager shiroEhcacheManager = new EhCacheManager();

shiroEhcacheManager.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");

return shiroEhcacheManager;
}
7 楼 bingyu_liu 2017-02-09  
楼主您好,按照您的教程,为shiro添加缓存成功了。但出现一个新问题,如果给Spring boot(1.4.3)添加热部署,项目就会报以下错误:
Caused by: net.sf.ehcache.CacheException: Another CacheManager with same name 'springbootcache' already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
----------------------------
请问楼主这个该怎样解决?
6 楼 xd03122049 2016-12-23  
    敢问下楼主,那个10分钟是怎么来的,我遍访资料也不知道这个10分钟是如何得来的?求解惑
5 楼 k88520 2016-11-03  
花了几天时间 跟着博主学习了 shiro的安全管理   虽然最后的权限缓存 还是会重复调用权限信息  但是 收货很大  非常感谢博主~~~~很厉害的博主 感谢前辈无私分享
4 楼 k88520 2016-11-02  
k88520 写道
额。。。试过之后还是会调用权限验证额。。。无法实现缓存  我已经添加了redis了 是不是因为  redis缓存和ehcache缓存会有冲突?啊  按照博主方法部署之后还是不行

如果是整合redis 的缓存呢   博主有什么建议没有?
3 楼 k88520 2016-11-02  
额。。。试过之后还是会调用权限验证额。。。无法实现缓存  我已经添加了redis了 是不是因为  redis缓存和ehcache缓存会有冲突?啊  按照博主方法部署之后还是不行
2 楼 林祥纤 2016-11-01  
k88520 写道
感谢博主无私分享~~~


O(∩_∩)O~~
1 楼 k88520 2016-11-01  
感谢博主无私分享~~~

相关推荐

    Rewired 1.1.39.3.unitypackage

    unity 最屌的外设插件,支持多种平台及手柄,支持多种手柄的震动 陀螺仪(switch pro不支持震动,陀螺仪)

    某D课堂 - 新版本微服务SpringCloud+Docker教程

    spring高手之路21 Spring API 网关 073 某D课堂 - 新版本微服务SpringCloud+Docker教程 video code.zip 35.5MB 9-05 微服务相关项目改造配置中心~1.mp4 353.6MB 9-04 高级篇幅消息总线整合配置中心架构流程图~1...

    同城聚合平台39.3全开源版分类信息公众号应用

    同城聚合平台39.3全开源版分类信息公众号应用 介绍https://s.w7.cc/module-3008.html

    Rewired 1.1.39.3.rar

    《Unity Rewired:游戏输入管理框架的深度解析》 Unity Rewired是一款专为Unity引擎设计的游戏输入管理框架,它极大地扩展了Unity内置的输入系统,提供了更强大、更灵活的控制选项,使得开发者能够更高效地管理和...

    某D课堂 - 新版本微服务SpringCloud+Docker教程-高级篇幅之链路追踪组件Zipkin+Sleuth实战

    spring高手之路21 Spring API 网关 073 某D课堂 - 新版本微服务SpringCloud+Docker教程 video code.zip 35.5MB 9-05 微服务相关项目改造配置中心~1.mp4 353.6MB 9-04 高级篇幅消息总线整合配置中心架构流程图~1...

    BT39.3激活方法

    ### BT39.3激活方法详解 #### 一、BarTender9.3SR2 (2725)概述及版本介绍 BarTender是一款功能强大的条形码、标签设计和打印软件,广泛应用于物流、制造、医疗等多个行业。根据用户需求的不同,BarTender提供了四...

    PyPI 官网下载 | mypy-boto3-workmailmessageflow-1.10.39.3.tar.gz

    《PyPI上的mypy-boto3-workmailmessageflow-1.10.39.3.tar.gz:Python库解析与应用》 PyPI(Python Package Index)是Python开发者的重要资源库,它为全球的Python程序员提供了无数的第三方库,极大地丰富了Python...

    PyPI 官网下载 | mypy-boto3-resource-groups-1.10.39.3.tar.gz

    《PyPI官网下载:mypy-boto3-resource-groups-1.10.39.3.tar.gz详解》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了大量预封装的Python库,便于开发者快速引入所需功能,提高开发效率。在本...

    PyPI 官网下载 | mypy-boto3-robomaker-1.10.39.3.tar.gz

    《PyPI官网下载:mypy-boto3-robomaker-1.10.39.3.tar.gz——深入理解Python库的构建与使用》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了无数开源的Python库供全球用户下载和使用。在PyPI...

    Python库 | mypy-boto3-guardduty-1.10.39.3.tar.gz

    通过`boto3`,开发者可以轻松地在Python应用中实现对AWS资源的管理、数据存储和计算任务。 `guardduty`是AWS提供的一项威胁检测服务,它持续监控云环境中的恶意活动和异常行为。GuardDuty能自动分析VPC流量、DNS...

    IT服务管理手册.doc

    39.3 可用性和IT服务持续性管理:关注系统的可用性,以及在灾难或故障时保证服务连续性的措施。 39.4 IT服务的预算及财务管理:涵盖了成本控制、预算编制和财务审计,以确保服务的经济性和效率。 39.5 容量管理:...

    Python库 | mypy-boto3-efs-1.10.39.3.tar.gz

    EFS是Amazon推出的一种完全托管的网络文件系统,允许在多个EC2实例间共享文件存储,无需管理硬件或软件,提供了弹性、高可用性和持久性的存储解决方案。Boto3库中的EFS模块则提供了对EFS服务的全面API支持,包括创建...

    中国IT安全硬件市场报告分析:上网行为管理宣贯.pdf

    深信服在2014年占据了安全内容管理硬件市场39.3%的份额,连续八年保持市场第一。这得益于公司在技术创新上的持续投入,例如在2005年首次定义并推出了上网行为管理产品,随后不断优化和扩展其功能。深信服的产品拥有...

    中国IT安全硬件市场报告分析:上网行为管理参照.pdf

    1. 上网行为管理市场:IDC发布的报告指出,深信服上网行为管理产品在2014年占据了39.3%的市场份额,领先于其他竞争者,成为市场占有率最高的安全内容管理硬件产品。这一领域的产品通过精细化的上网管理,有效提升了...

    Rewired 输入管理插件.rar

    从“Rewired 1.1.39.3.unitypackage”文件中,你可以导入包含所有所需资源和脚本的包。一旦导入成功,你可以在 Unity 编辑器中看到 Rewired 相关的组件和设置选项。通过创建“Input Controller”,你可以开始定义和...

    UMAP Journal 36.3 2015 MCM Contest

    从标签《umap journal umap mcm 美赛》可以确认,这份文件关联的主题包括UMAP期刊、数学建模竞赛(MCM),以及美赛(MCM的中文简称)。这可以引导我们了解这本期刊的主要内容与数学建模紧密相关,并且涉及到国际竞赛...

    20210124-中金公司-爱柯迪-600933-铝质汽车中小零部件优势企业,精益管理与规模效应共驱稳定成长.pdf

    本份中金公司关于爱柯迪(600933)的研究报告全面分析了爱柯迪作为铝质汽车中小零部件优势企业的发展前景和投资价值。报告的主要内容可从以下几个知识点进行归纳: 1. 铝质汽车零部件市场空间巨大 报告指出,随着...

    Yii Framework 开发框架 v2.0.39.3

    为您提供Yii Framework 开发框架下载,Yii是一个高性能的PHP5的...通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。

    Python库 | mypy-boto3-es-1.10.39.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:mypy-boto3-es-1.10.39.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

Global site tag (gtag.js) - Google Analytics