shiro----授权和自定义授权的三种方法
授权:给身份认证通过的任授予某些资源的访问权限 权限的粒度 粗粒度 细粒度
粗粒度
User 具有 CRUD 的操作 通常指的是表的操作
细粒度
只允许查询 id=1 的用户 使用业务代码实现
Shiro 的授权是粗粒度
角色:角色就是权限的集合
Shiro 中代码的实现
详细见代码
Shiro 中的授权检查的 3 种方式
A、 编程式
B、 注解式
c、标签式
自定义 Realm 实现授权
我们仅仅通过配置文件指定授权是非常的不灵活的,在实际的应用中我们是将用户的信息和合权限信息保存到数据库中,我们是从数据库中获得用户的信息 ,使用 JDBCRealm 进行授权 。使用 JDBCRealm 操作的时候也不是很灵活。所以我们一般使用自定义 Realm 实现授权
//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
String username = principalCollection.getPrimaryPrincipal().toString();
//获得username 然后去数据库查询这个用户对应的角色,在根据角色查询出指定角色下对应的菜单,
//返回给指定角色下的所有菜单--List集合
System.out.println("username="+username);
//模拟数据库查的菜单
List<String> list =new ArrayList<>();
list.add("updateUser");
list.add("addUser");
list.add("deleteUser");
SimpleAuthorizationInfo simpleAuthorizationInfo=new SimpleAuthorizationInfo();
for(String l:list){
simpleAuthorizationInfo.addStringPermission(l);
}
return simpleAuthorizationInfo;
}

浙公网安备 33010602011771号