Shiro 可以用代码或者注解来控制权限,通常我们使用注解控制,不仅简单方便,而且更加灵活.Shiro 注解一共有五个:
一般情况下我们在项目中做权限控制,使用最多的是 RequiresPermissions...和 RequiresRoles,允许存在多个角色和权限,默认逻辑是 AND,也就是同时拥有这些才可以访问方法,可以在注解中以参数的形式设置成 OR
示例
//拥有一个角色就可以访问
@RequiresRoles...TOKEN,之前 Redis 的 TOKEN 就会失效了
当第一次访问接口后我们可以看到缓存中已经有权限数据了,在次访问接口的时候,Shiro 会直接去缓存中拿取权限,注意访问接口时候要设置请求头....ADMIN 这个号现在没有 sys:info:all 这个权限的,所以无法访问 getInfoAll 接口,我们要动态分配权限后,要清掉缓存,在访问接口时候,Shiro 会去重新执行授权方法,之后再次把权限和角色数据放入缓存中...访问添加权限测试接口,因为是测试,我把增加权限的用户 ADMIN 写死在里面了,权限添加后,调用工具类清掉缓存,我们可以发现,Redis 中已经没有缓存了
再次访问 getInfoAll 接口,因为缓存中没有数据