手动使用cache
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
//ehcache缓存使用
Element el = null;
CacheManager manager = CacheManager.create();
Cache cache = manager.getCache("myCache");
if(cache.isKeyInCache("shiro"+principals)){
el = cache.get("shiro"+principals);
return (AuthorizationInfo) el.getObjectValue();
}
//ehcache缓存使用
String userName = (String) principals.getPrimaryPrincipal();
Front_login login= new Front_login();
login.setAccount(userName);
int id=fi.select_loginlk(login).getId();
login.setId(id);
Front_login returnLogin = fi.get_login(login);
//角色集合
Set<String> Roles = new HashSet<String>();
for(Front_role r :returnLogin.getRoles()){
Roles.add(r.getName());
}
System.out.println("调用shiro自定义域");
//权限集合
Set<String> Urls = fi.get_all_url(login);
SimpleAuthorizationInfo authorizationInfo=new SimpleAuthorizationInfo();
authorizationInfo.addRoles(Roles);
authorizationInfo.addStringPermissions(Urls);
//ehcache缓存使用
if(authorizationInfo!=null){
el = new Element("shiro"+principals, authorizationInfo);
cache.put(el);
}
//ehcache缓存使用
return authorizationInfo;
}
本文介绍了一个使用Java Shiro框架结合EHCache实现用户授权信息缓存的具体案例。通过EHCache来缓存从数据库获取的用户角色和权限信息,提高了系统的响应速度。文章详细展示了如何在Shiro中自定义Realm来利用EHCache进行缓存操作。

1万+

被折叠的 条评论
为什么被折叠?



