Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.sction.security.shiro;
  
  import java.util.HashSet;
  import java.util.Set;
  
 
 
 public class ShiroDbRealm extends AuthorizingRealm {
认证回调函数, 登录时调用.
 
 		UsernamePasswordToken token = (UsernamePasswordTokenauthcToken;
 		if (user != null) {
 			String password = user.getPassword();
 			return new SimpleAuthenticationInfo(userpasswordgetName());
 		} else {
 			return null;
 		}
 	}

授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用.
 
 			PrincipalCollection principals) {
 		ShiroUser shiroUser = (ShiroUserprincipals.fromRealm(getName())
 				.iterator().next();
 
 		Set<Stringroles = null;
 
 		if (shiroUser.getRoles() == null
 				|| shiroUser.getRoles().trim().equals("")) {
 			roles = .loadRoles(shiroUser.getLoginid());
 		} else {
 			String[] rs = shiroUser.getRoles().split(",");
 			roles = new HashSet<String>();
 			for (int i = 0; i < rs.lengthi++) {
 				roles.add(rs[i]);
 			}
 		}
 		if (roles != null) {
 			info.addRoles(roles); 
 			if (shiroUser.getPops() == null
 					|| shiroUser.getPops().trim().equals("")) {
 				for (String role : roles) {
 					if (pops != null) {
 						// 基于Permission的权限信息
 						info.addStringPermissions(pops);
 					}
 				}
 			} else {
 				String[] ps = shiroUser.getPops().split(",");
 				Set<Stringpops = new HashSet<String>();
 				for (int i = 0; i < ps.lengthi++) {
 					pops.add(ps[i]);
 				}
 				info.addStringPermissions(pops);
 			}
 			return info;
 		} else {
 			return null;
 		}
 	}

更新用户授权信息缓存.
 
 	public void clearCachedAuthorizationInfo(String principal) {
 				principalgetName());
 	}

清除所有用户授权信息缓存.
 
 	public void clearAllCachedAuthorizationInfo() {
		if (cache != null) {
			for (Object key : cache.keys()) {
				cache.remove(key);
			}
		}
	}
	public void setAccountManager(AccountManager accountManager) {
		this. = accountManager;
	}
New to GrepCode? Check out our FAQ X