改善性能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,可以将一些重复的权限验证缓存起来,复用已有验证,减轻了验证的调用次数,降低了性能的消耗,在安全体系中可以使用这些技术有效改善性能。

数据运维技术 » 改善性能Shiro用Redis做缓存(shiro使用redis)