springboot+shiro:ShiroConfiguration配置

1.EhCacheManager EhCache缓存管理也可将shiro session存入redis中

    @Beanpublic EhCacheManager getEhCacheManager() {EhCacheManager em = new EhCacheManager();em.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");return em;}

ehcache-shiro.xml中的配置

<?xml version="1.0" encoding="utf-8"?><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd"><diskStore path="java.io.tmpdir"/><defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="30" timeToLiveSeconds="30" overflowToDisk="false"/><!--配置自定义缓存maxElementsInMemory:缓存中允许创建的最大对象数eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。overflowToDisk:内存不足时,是否启用磁盘缓存。memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。--><cache name="erpCache"maxElementsInMemory="10000"eternal="true"overflowToDisk="false"timeToIdleSeconds="0"timeToLiveSeconds="600"memoryStoreEvictionPolicy="LFU" />
</ehcache>

2.配置 LifecycleBeanPostProcessor(管理shiro Bean的生命周期)

 public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {return new LifecycleBeanPostProcessor();}

3.配置 DefaultAdvisorAutoProxyCreator(用来扫描上下文,寻找所有的Advistor,将这些Advistor应用到符合其定义的切入点的Bean中)

	@Beanpublic DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator();daap.setProxyTargetClass(true);return daap;}

4.配置SecurityManager (管理器,管理subject及其相关的登陆验证,授权等,需配置realm和缓存管理)

    @Bean(name = "securityManager")public DefaultWebSecurityManager getDefaultWebSecurityManager(SystemAuthorizingRealm realm) {DefaultWebSecurityManager dwsm = new DefaultWebSecurityManager();dwsm.setRealm(realm);
//      <!-- 用户授权/认证信息Cache, 采用EhCache 缓存 ,此处是使用EhCache,可换成redis缓存--> dwsm.setCacheManager(getEhCacheManager());return dwsm;}

5.配置 AuthorizationAttributeSourceAdvisor(开启shiro spring aop 权限注解支持,即:@RequiresPermissions(“权限code”)

    @Beanpublic AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor();aasa.setSecurityManager(securityManager);return aasa;}

6.配置shiroFilter

    @Bean(name = "shiroFilter")public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager, UserService userService,MaterialCategoryService materialCategoryMapper,PermissionsServcie permissionsServcie,OrgService orgService) {ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();// 必须设置 SecurityManager  shiroFilterFactoryBean.setSecurityManager(securityManager);// 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面shiroFilterFactoryBean.setLoginUrl("/login");// 登录成功后要跳转的连接shiroFilterFactoryBean.setSuccessUrl("/user");shiroFilterFactoryBean.setUnauthorizedUrl("/403");//设置过滤链的私有方法loadShiroFilterChain(shiroFilterFactoryBean, userService,materialCategoryMapper,permissionsServcie,orgService);return shiroFilterFactoryBean;}

7.private loadShiroFilterChain 私有过滤链定义,供6使用

/*** 加载shiroFilter权限控制规则(从数据库读取然后配置)*/private void loadShiroFilterChain(ShiroFilterFactoryBean shiroFilterFactoryBean, UserService userService, MaterialCategoryService materialCategoryMapper, PermissionsServcie permissionsServcie, OrgService orgService) {//拦截规则,//CaptchaFormAuthenticationFilter extends FormAuthenticationFilter(shiro认证)//MapLogoutFilter  extends org.apache.shiro.web.filter.authc.LogoutFilter(shiro Logout)Map<String, Filter> filters = shiroFilterFactoryBean.getFilters();filters.put("authc", new CaptchaFormAuthenticationFilter(userService,materialCategoryMapper, permissionsServcie,orgService));filters.put("logout", new MapLogoutFilter());/// 下面这些规则配置最好配置到配置文件中 ///Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();// authc:该过滤器下的页面必须验证后才能访问,它是Shiro内置的一个拦截器org.apache.shiro.web.filter.authc.FormAuthenticationFilterfilterChainDefinitionMap.put("/myCode/**", "authc");// 这里为了测试,只限制/user,实际开发中请修改为具体拦截的请求规则// anon:它对应的过滤器里面是空的,什么都没做logger.info("##################从数据库读取权限规则,加载到shiroFilter中##################");filterChainDefinitionMap.put("/user/edit/**", "authc,perms[user:edit]");// 这里为了测试,固定写死的值,也可以从数据库或其他配置中读取//什么请求对应什么拦截规则filterChainDefinitionMap.put("/login", "authc");filterChainDefinitionMap.put("/logout", "logout");filterChainDefinitionMap.put("/**", "anon");//anon 可以理解为不拦截shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

幼师计算机课是上什么,幼师面试 鱼在天空飞,鸟在水里游是小班课程,还是中班,大班的课程...

大班第一课时教学目标&#xff1a;1、学会生字“鸟、儿、鱼、飞”,读准音,认清形,了解义,能正确书写.2、看图感知画面内容,练习说话.3、拓展认识各种鸟,鱼&#xff1b;激发学生喜爱小动物的的感情.教学重点&#xff1a;学会“鸟、儿、飞、鱼”四个生字,读准字音,了解字义,能正确…

python关键词大全_Python 批量获取Baidu关键词的排名并入库

1.[代码][Python]代码#-*- coding: UTF-8 -*-#Python UTF-8 抓取百度关键词V1.0#key.txt是抓取文件配置#author PHPer.yanggmail.comimport cgi,urllib #URL读取import re #正则匹配import MySQLdb #MySQLimport datetime #时间#import time,thread #多线程"""M…

mysql出现多线程操作同一个表的情况,应该怎么办?

1、对于MySQL来说&#xff0c;有三种锁的级别&#xff1a;页级、表级、行级。 页级的典型代表引擎为BDB。 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。 行级的典型代表引擎为INNODB。 2、我们实际应用中用的最多的就是行锁。 行级锁的优点如下&#xff1a; 1&…

计算机黑屏策略,小黑w7系统诊断策略服务已被禁用的还原教程

小黑w7家庭版开机速度快&#xff0c;是入门级小黑w7系统。据调查不少用户在使用中都碰到了诊断策略服务已被禁用的问题。面对小黑w7系统诊断策略服务已被禁用这样的小问题&#xff0c;我们该如何解决呢&#xff1f;不经常使用电脑的朋友对于小黑w7系统诊断策略服务已被禁用的问…

python中的date的含义_python中date、datetime、string的相互转换

import datetimeimport timestring转datetimestr 2012-11-19date_time datetime.datetime.strptime(str,%Y-%m-%d)date_timedatetime.datetime(2012,11,19,0,0)datetime转stringdate_time.strftime(%Y-%m-%d)2012-11-19datetime转时间戳time_time time.mktime(date_time.tim…

overline css,CSS text-decoration-line 属性

定义和用法text-decoration-line 属性规定文本修饰要使用的线条类型。注意&#xff1a;您也可以使用 text-decoration 属性设置 text-decoration-line。text-decoration 属性是 text-decoration-line、text-decoration-style 和 text-decoration-color 属性的速记属性。注意&am…

npoi word在试图打开文件时遇到错误_【技巧】word在试图打开文件时遇到错误

问题使用Word的时候遇到了一个问题&#xff0c;如下图所示解决方案情况一&#xff1a;修改文件后缀导致打开错误如果源文件不是“.doc”或者“.docx”格式结尾&#xff0c;通过修改文件后缀的方式修改为“.doc”或者“.docx”格式。在打开文件的时候出现上述警告时&#xff0c;…

空间服务器有问题是系统问题吗,服务器空间租用两个主要问题要留意

只要是建设网站&#xff0c;那么服务器空间租用都是不能缺少的。而且这样的一种租赁模式都是长期的&#xff0c;所以我们需要考虑到租用的整体性价比&#xff0c;这样后续的应用才能有所保障。而且我们只要是建设了网站&#xff0c;服务器和空间一般都是不会更换掉的&#xff0…

面试让HR都能听懂的MySQL锁机制,欢声笑语中搞懂MySQL锁

腾讯云数据库负责人林晓斌说过&#xff1a;“我们面试MySQL同事时只考察两点&#xff0c;索引和锁”。言简意赅&#xff0c;MySQL锁的重要性不言而喻。 本文通过同事“侨总”的一场面试&#xff0c;带你通俗易懂的掌握MySQL各种锁机制&#xff0c;希望可以帮到你&#xff01;近…

浅谈python使用多态跟不用多态的区别_python 多态和 super 用法

python 中的多态实现非常简单&#xff0c;只要是在子类中实现和父类同名的方法&#xff0c;便能实现多态&#xff0c;如果想在子类中调用父类的方法&#xff0c;有多种方法&#xff0c;但是当涉及菱形继承等问题是&#xff0c;super 就成为了比较好的解决方案。普通继承对于比较…

战地2服务器怎么虚拟人数,战地2怎么修改作战人数?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼echo *****************************************************************************************echo AIDefault.ai ****************************************************************************echo ********************…

MySQL锁机制,行锁jingran加在索引上

锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff0c;应该都不陌生。?但在这之前我们先来看看并发控制&#xff0c;理清MVCC多版本并发控制和锁的关系&#xff0c;这也是之前我很迷惑的一个点 并发控制技术 在数据库中&#xff0c;数据可以允许多个用户…

pythonweb面试常见问题_python和web框架面试题目整理(3)

1、django为什么需要缓存&#xff0c;有几种缓存方式&#xff1f;答&#xff1a;由于Django是动态网站&#xff0c;部分请求均会去数据库进行相应的操作&#xff0c;当程序的访问量大时&#xff0c;耗时必然会更加明显&#xff0c;最简单解决方式是使用缓存提高读请求的处理效率…

闲置服务器 虚拟服务器,闲置主机搭建服务器

闲置主机搭建服务器 内容精选换一换安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。本地磁盘映射(推荐使用…

浏览器接收响应数据过大_交互响应性能之优化FID

由于 FID 需要一个真实用户的交互&#xff0c;所以无法用实验数据测试。为了在实验数据下预测 FID&#xff0c;通常会用 TBT(Total Blocking Time)&#xff0c;具体这个指标后面文章会介绍。他们测量的内容不同&#xff0c;但改善 TBT 通常也能改善 FID。一个糟糕的 FID 主要原…

postman如何发送application/json类的post请求

​ 当接口类型限制为只接受application/json类型的请求&#xff0c;我们使用postman测试的时候怎么选择呢&#xff1f;如下图&#xff1a; 我们需要先在postman上选择POST请求方法&#xff0c;后边输入要请求的地址即可。 在Body选项卡选择raw&#xff0c;然后再后边的下拉选项…

fe文件服务器,FE File Explorer

FE File Explorer是Mac电脑上的一款文件管理应用。FE File Explorer可以访问FTP&#xff0c;SFTP&#xff0c;WebDAV服务器和网络共享上的文件。在这些位置之间传输文件。将电影和歌曲流式传输到Mac。直接在远程位置查看和编辑文档&#xff0c;照片&#xff0c;文件&#xff0c…

swift中文文档_Flutter 中文文档:使用 Packages

Flutter 支持使用其他开发者向 Flutter 和 Dart 生态系统贡献的共享 package&#xff0c;这意味着你可以快速构建应用而不是一切从零开始。现有的 package 支持许多使用场景&#xff0c;例如&#xff0c;网络请求 (http)&#xff0c;自定义导航/路由处理 (fluro)&#xff0c;集…

Spring深入理解之ComponentScan___@ComponentScan 详解

Spring深入理解之ComponentScan 一、概述 ComponentScan顾名思义包扫描&#xff0c;底层其实就可以通过递归算法反射将其装载成bean来实现的&#xff0c;实在开发过程中&#xff0c;Spring已经帮我们实现好了&#xff0c;我们其实就可以直接使用XML或者注解的形式来进行业务处…

云服务器centos怎么还原系统还原,云服务器centos怎么还原系统还原

云服务器centos怎么还原系统还原 内容精选换一换云耀云服务器(Halo Elastic Cloud Server&#xff0c;HECS)是可以快速搭建简单应用的新一代云服务器&#xff0c;具备独立、完整的操作系统和网络功能。提供快速地应用部署和简易的管理能力&#xff0c;适用于网站搭建、开发环境…