改善性能Shiro用Redis做缓存(shiro使用redis)
现今的信息安全体系尤其重要,Shiro作为经过积累和完善的安全框架,成为首选,但众所周知,安全验证易造成调用次数高,导致性能下降,这里将介绍Shiro使用Redis做缓存有效改善性能的做法。
安装并启动Redis,创建ShiroConfig类,加入RedisCacheManager实例,主要如下:
“`java
@Configuration
public class ShiroConfig {
@Bean
public RedisCacheManager redisCacheManager(){
RedisCacheManager redisCacheManager = new RedisCacheManager();
return redisCacheManager;
}
}
然后,在程序的securityManager中实例化RedisCacheManger,一般通过编写Realm实现,代码如下:
```java@Configuration
public class ShiroConfig {
@Bean public Realm realm() {
AuthorizingRealm realm = new AuthorizingRealm() { // 重写doGetAuthenticationInfo()和doGetAuthorizationInfo()
@Override protected AuthorizationInfo doGetAuthorizationInfo() {
// 设置cache管理 SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.setCache(cacheManager.getCache("authorizationCache")); return info;
} }
}}
在应用中使用即可,如下:
“`java
@Service
public class UserService {
@Autowired
private SecurityManager securityManager;
// 根据用户名获取登录信息
public User getUserByName(String name) {
// 将用户名+角色信息加入到shiro的cache中
securityManager.getCacheManager().getCache(name).put(name, role);
// 从缓存中获取数据
return (User) securityManager.getCacheManager().getCache(name).get(name);
}
}
通过给安全管理器配置RedisCacheManager,可以将一些重复的权限验证缓存起来,复用已有验证,减轻了验证的调用次数,降低了性能的消耗,在安全体系中可以使用这些技术有效改善性能。