【尚筹网】六、RBAC 权限控制模型和 Ajax 请求

简介

为什么要进行权限控制

如果没有权限控制,系统的功能完全不设防,全部暴露在所有用户面前。用户登录以后可以使用系统中的所有功能。这是实际运行中不能接受的。

所以权限控制系统的目标就是管理用户行为,保护系统功能。

什么是权限控制

“权限”=“权力”+“限制”

如何进行权限控制

定义资源

资源就是系统中需要保护起来的功能。具体形式很多:URL地址、handler方法、service方法、页面元素等等都可以定义为资源使用权限控制系统保护起来。

创建权限

一个功能复杂的项目会包含很多具体资源,成千上万都有可能。这么多资源逐个进行操作太麻烦了。为了简化操作,可以将相关的几个资源封装到起,打包成“权限”同时分配给有需要的人。

image-20241202222744848

image-20241202222825278

创建角色

对于一个庞大系统来说,一方面需要保护的资源非常多,另一方面操作系统的人也非常多。把资源打包为权限是对操作的简化,同样把用户划分为不同角色也是对操作的简化。否则直接针对一个个用户进行管理就会很繁琐。

所以角色就是用户的分组、分类。先给角色分配权限,然后再把角色分配给用户,用户以这个角色的身份操作系统就享有角色对应的权限了。

管理用户

系统中的用户其实是人操作系统时用来登录系统的账号、密码。

建立关联关系

  • 权限→资源:单向多对多
    • Java 类之间单向:从权限实体类可以获取到资源对象的集合,但是通过资源获取不到资源
    • 数据库表之间多对多:
      • 一个权限可以包含多个资源
      • 一个资源可以被分配给多个不同的权限
  • 角色→权限:单向多对多
    • Java 类之间单向:从角色实体类可以获取到权限对象的集合,但是通过权限获取不到角色
    • 数据库表之间多对多:
      • 一个角色可以包含多个权限
      • 一个权限可以被分配给多个不同的角色
  • 用户→角色:双向多对多
    • Java 类之间双向:可以通过用户获取它具备的角色,也可以看一个角色包含哪些用户
    • 数据库表之间多对多:
      • 一个角色可以包含多个用户
      • 一个用户可以身兼数职

多对多关联关系在数据库中的表示

没有中间表的情况

image-20241202224847758

如果只能在一个外键列上存储关联关系数据,那么现在这个情况无法使用 SQL 语句进行关联查询

有中间表的情况

image-20241202225243900

select t_student.id, t_student.name 
from t_student 
	left join t_inner on t_student.id = t_inner.student_id
	left join t_subject on t_inner.subject_id = t_subject.id
where t_subject.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jasonakeke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值