shiro踩坑--cacheManger

在Shiro配置中使用securityManager.setCacheManager(cacheManager())时,权限被加载到缓存中并在session有效期内共用,导致所有登录用户共享同一份权限列表。探讨了此问题的成因及临时解决方案。

shiro配置中使用securityManager.setCacheManager(cacheManager());只会在第一次请求权限操作时将当前用户的权限加载到cache中,并且有效时间为session有效的时间,下一次请求时不会再去DB中加载权限列表到缓存中,并cache失效为null后,又更新加载一次当前请求用户的权限到缓存中。最重要的是在cache中的这份权限会被所有登陆的用户共用,这就很恶心,所有的登陆用户共用同一份权限列表,现还没有时间找寻解决方法,暂时是不使用cacheManager,这样每次操作请求,都会加载DB当前用户的权限列表。

redis中只有一份权限列表

服务架构:springboot1.5.15

 

提供的引用内容中未提及Shiro安全白名单(Shiro security - whitelist)的相关信息。不过,Shiro安全白名单通常是指在Shiro的权限控制体系中,设置一些不需要进行认证或授权就可以访问的资源列表。 在Shiro的配置中,一般可以通过配置过滤器链来实现白名单功能。例如,在Java代码中可以这样配置: ```java import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition; import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ShiroConfig { @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); // 配置白名单 DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition(); // 以下是白名单配置示例,这些路径不需要认证即可访问 chainDefinition.addPathDefinition("/static/**", "anon"); chainDefinition.addPathDefinition("/login", "anon"); shiroFilterFactoryBean.setFilterChainDefinitionMap(chainDefinition.getFilterChainMap()); return shiroFilterFactoryBean; } @Bean public ShiroFilterChainDefinition shiroFilterChainDefinition() { return new DefaultShiroFilterChainDefinition(); } } ``` 在上述代码中,`anon` 过滤器表示该路径是白名单路径,不需要进行认证就可以访问。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值