若依权限剖析

一、RABC模型

1、主要概念:

用户(User):实际使用系统的人员。每个用户可以拥有一个或多个角色。
角色(Role):权限的集合,代表用户在系统中的职位或职能。角色是根据组织的需要定义的。
权限(Permission):对系统资源的访问权。权限可以是读取、写入、修改或删除某些资源。
会话(Session):用户在系统中的一次登录实例。用户可以在会话中激活一个或多个角色。

2、基本模型:

基本关系组成:
1. 用户-角色分配(User-Role Assignment, UA):定义哪些用户被分配到哪些角色。
2. 角色-权限分配(Role-Permission Assignment, PA):定义哪些角色拥有哪些权限。
3. 用户-会话分配(User-Session Assignment, US):定义用户和会话之间的关系。
4. 角色-会话分配(Role-Session Assignment, RS):定义会话中可以激活哪些角色。

3、涉及表

sys_menu           菜单权限表
sys_role           角色信息表
sys_role_menu      角色和菜单关联表
sys_user           用户信息表
sys_user_role      用户和角色关联表

4、表之间的关系

二、若依权限设置

1、若依对基础RDBC模型表新增了四张表:

sys_dept          部门表
sys_post          岗(职)位信息表
sys_role_dept     角色和部门关联表
sys_user_post    用户与岗位关联表

2、九张表关系

3、权限UI操作:

①创建菜单
②创建角色,并分配权限
③创建用户,并关联角色

4、注解做权限检查

@PreAuthorize 注解 是spring security框架中用来做权限检查的

运行方法前验证权限,权限够就放行,不够就拦截
流程如下:

5、数据权限

-  数据范围过滤,在mapper/system/SysUserMapper.xml中selectUserList的sql后拼接了${params.dataScope}

-  防止 $ 符号的sql注入,在clearDataScope方法中做了处理

-  SysUser extends BaseEntity ,在BaseEntity中有个名为params的 Map<String, Object>;

-  params会在framework/aspectj/DataScopeAspect.java中的dataScopeFilter方法进行数据范围过滤

-  dataScope(数据范围):1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限

-  @DataScope(deptAlias = "d", userAlias = "u") 注解中deptAlias和userAlias为部门别名和用户别名,sql拼接时用

分配数据权限UI界面:

6、按钮权限

菜单表内的perms字段,如:system:user:edit 进行判断

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值