diboot/diboot-shiro
mazhicheng 3d2f852e97 更新依赖jar版本,将components组件移至diboot-v2-starter项目 2019-12-05 20:20:10 +08:00
..
src/main/java/com/diboot/shiro 废弃diboot-example模块,已迁移至diboot-v2-example 2019-11-28 17:55:55 +08:00
README.md 更新依赖jar版本,将components组件移至diboot-v2-starter项目 2019-12-05 20:20:10 +08:00
build.gradle 修改token认证 2019-10-21 10:17:11 +08:00

README.md

diboot-shiro: RBAC角色权限+基于Shiro的细粒度权限控制

注: diboot-shiro组件下个版本将进行重构优化此版本代码仅供参考

1、@AuthorizationPrefix

类注解,与@AuthorizationWrapper搭配使用设置通用权限前缀作用域为当前类的所有方法

2、@AuthorizationWrapper

类/方法注解在保证shiro的@RequirePermissions注解的功能基础上增加名称、权限前缀特性使用方式同@RequiresPermissions

3、@AuthorizationCache

方法注解,在资源授权校验过程中,系统会频繁与数据库进行交互,故而提供缓存机制

  • 缓存时机:缓存会在用户第一次进行权限验证的之后缓存数据
  • 当前注解作用:如果通过系统调整权限,只需要将该注解加在更新或添加权限处,将会清空权限缓存,下次进入将重新加载权限

4、AuthorizationProperties

提供一些权限相关的配置,主要包括:

  • 权限环境变量提供dev、test、prod三种选项
    • 默认dev非dev状态下每次都将读取当前启动系统中所有权限不在系统内的权限将会自动物理删除多人协作的开发环境建议使用默认配置
  • 权限是否入库:
    • 默认false但是我们建议开启将会自动读取系统中的权限到数据库
  • 拥有所有权限的角色:
    • 如果想给予角色所有资源权限那么直接设置用户为配置的角色即可如果不配置那么默认使用的是ADMIN角色

示例配置:

#权限是否存储数据库:默认不开启
diboot.shiro.auth.storage=true
#存储环境默认dev环境不会删除代码中不存在的权限
diboot.shiro.auth.env=dev
#配置所有资源均可访问的角色ALL1、ALL2、ALL3不配置时默认最高权限为ADMIN
diboot.shiro.auth.has-all-permissions-role-list[0]=ALL1
diboot.shiro.auth.has-all-permissions-role-list[1]=ALL2
diboot.shiro.auth.has-all-permissions-role-list[2]=ALL3
#配置权限缓存机制
##是否开启缓存
diboot.shiro.cache.permission-caching-enabled=true
##缓存方式暂时提供shiro内置的内存缓存
diboot.shiro.cache.cache-way=memory

5、AuthorizationStorage

调用该类autoStorage传入spring上下文参数使用参考ExampleListener类

6、样例参考 - diboot-shiro-example