shiro开启realm
使用缓存,可以解决每次访问请求都查数据库的问题。第一次授权后存入缓存。
缓存流程
shiro中提供了对认证信息和授权信息的缓存。shiro默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启的。主要研究授权信息缓存,因为授权的数据量大。
用户认证通过。
该 用户第一次授权:调用realm查询数据库
该 用户第二次授权:不调用realm查询数据库,直接从缓存中取出授权信息(权限标识符)。
-------------------------------------使用ehcache缓存框架------------------------------
添加Jar包:
aaarticlea/png;base64,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" alt="" />
配置cacheManager
aaarticlea/png;base64,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" alt="" />
注入securityManager
aaarticlea/png;base64,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" alt="" />
classpath下配置shiro-ehcache.xml
aaarticlea/png;base64,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" alt="" />
到这里就可以使用缓存了,用户登进去一次之后访问系统不会每次都查询数据库查询权限
------------------------------------------------缓存清-空--------------------------
如果用户正常退出,缓存自动清空。
如果用户非正常退出,缓存自动清空。
如果修改了用户的权限,而用户不退出系统,修改的权限无法立即生效。
需要手动进行编程实现:
在权限修改后调用realm的clearCache方法清除缓存。
正常开发时要放在service中调用。
在service中,权限修改后调用realm的清空缓存方法。
在realm中定义clearCached方法:
// 清除缓存
public void clearCached() {
PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals();
super.clearCache(principals);
}
测试清除缓存controller方法:
aaarticlea/png;base64,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" alt="" />
shiro开启realm的更多相关文章
- shiro自定义Realm
1.1 自定义Realm 上边的程序使用的是shiro自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm. ...
- Shiro笔记(四)Shiro的realm认证
认证流程: 1.获取当前Subject.调用SecurityUtils.getSubject(); 2.测试当前用户是否已经被认证,即是否已经登录,调用Subject的isAurhenticated( ...
- Shiro中Realm
6.1 Realm [2.5 Realm]及[3.5 Authorizer]部分都已经详细介绍过Realm了,接下来再来看一下一般真实环境下的Realm如何实现. 1.定义实体及关系 即用户-角色 ...
- 自定义shiro的Realm实现和CredentialsMatcher实现以及Token实现
Realm是shiro比较核心的接口,简单说它的实现类就是校验用户输入的账号信息的地方.如果想自定义实现一般的配置文件如下: <!--自定义Realm 继承自AuthorizingRealm - ...
- 权限框架 - shiro 自定义realm
上篇文章中是使用的默认realm来实现的简单登录,这仅仅只是个demo,真正项目中使用肯定是需要连接数据库的 首先创建自定义realm文件,如下: 在shiro中注入自定义realm的完全限定类名: ...
- shiro多Realm第一次调用不生效问题
1. 由于最近自己写的一个项目上用到了多realm的使用,遇到了一个这样的问题: 1. 自己继承了BasicHttpAuthenticationFilter,实现了获取token,然后直接请求api的 ...
- shiro自定义realm支持MD5算法认证(六)
1.1 散列算法 通常需要对密码 进行散列,常用的有md5.sha, 对md5密码,如果知道散列后的值可以通过穷举算法,得到md5密码对应的明文. 建议对md5进行散列时加salt(盐),进行 ...
- shiro自定义realm认证(五)
上一节介绍了realm的作用: realm:需要根据token中的身份信息去查询数据库(入门程序使用ini配置文件),如果查到用户返回认证信息,如果查询不到返回null.token就相当于是对用户输入 ...
- Shiro自定义Realm时用注解的方式注入父类的credentialsMatcher
用Shiro做登录权限控制时,密码加密是自定义的. 数据库的密码通过散列获取,如下,算法为:md5,盐为一个随机数字,散列迭代次数为3次,最终将salt与散列后的密码保存到数据库内,第二次登录时将登录 ...
随机推荐
- MySQL系统时间函数NOW(),CURRENT_TIMESTAMP(),SYSDATE()的区别
CURRENT_TIMESTAMP是NOW的同义词,也就是说两者是相同的. SYSDATE函数返回的是执行到当前函数时的时间,而NOW返回的是执行SQL语句时的时间. 测试语句: SELECT NOW ...
- (转)C#命名规范
C#命名规范 数据类型 数据类型简写 标准命名举例 Array arr arrShoppingList Boolean bln blnIsPostB ...
- LeetCode之数组处理题java
342. Power of Four Total Accepted: 7302 Total Submissions: 21876 Difficulty: Easy Given an integer ( ...
- Presto资源组配置
{ "rootGroups": [ { "name": "global", "softMemoryLimit": &qu ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十三周
java学习第十三周 本周,进行了对前六章知识点的小测试,在测试中我也发现了许多自己学习上存在的隐患,对一些知识点理解的太过粗略,没有很好的去记忆那些重要的小细节,把注意力过多的放在了 ...
- SmartGit过期后破解方法
根据自己的操作系统,进入相应的文件夹 ,可能还有一个版本号的文件夹,再进入 Windows: %APPDATA%\syntevo\SmartGit\OS X: ~/Library/Preference ...
- Qt + OpenSenceGraph(osg) 加载OSG模型
- vmware workstation环境下虚拟机固定ip的设置
一.准备 (1)vmware workstation (2)centOS 6.5 二.配置 采用nat模式对虚拟机进行固定ip配置,nat模式相当于在windows的操作系统下构建了一个独立的内部局域 ...
- DataTable数据分页
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Refle ...
- xStream完美转换XML、JSON(转)
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...