1 shiro受权数据库
// 基于资源受权ide
System.out.println("是否拥有某一个权限:" + subject.isPermitted("user:delete"));spa
System.out.println("是否拥有多个权限:" + subject.isPermittedAll("user:create:1", "user:delete"));ip
对应的check方法:ci
subject.checkPermission("sys:user:delete");资源
subject.checkPermissions("user:create:1","user:delete");字符串
// 受权get
@Overrideit
protected AuthorizationInfo doGetAuthorizationInfo(io
PrincipalCollection principals) {
// 获取身份信息
String username = (String) principals.getPrimaryPrincipal();
// 根据身份信息从数据库中查询权限数据
//....这里使用静态数据模拟
List<String> permissions = new ArrayList<String>();
permissions.add("user:create");
permissions.add("user.delete");
//将权限信息封闭为AuthorizationInfo
SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
for(String permission:permissions){
simpleAuthorizationInfo.addStringPermission(permission);
}
return simpleAuthorizationInfo;
}
权限字符串的规则是:“资源表示符:操做:资源实力标识符”,意思是对哪一个资源的哪一个实例具备什么操做,“:”是资源/操做/实例的分隔符,权限字符串也可使用【*】通配符
例如:
用户建立权限:user:create 活 user:create:*
用户修改实例001的权限:user:update:001
用户实例001的全部权限:user:*:001