RBAC0模型简介:
RBAC0是RBAC系列模型中的基础模型,随后的RBAC系列模型都将按照RBAC0基础模型进行改进,所以学习RBAC模型就必须要牢牢掌握RBAC0模型的思想以及使用方法。
RBAC0引入了角色的思想解决了用户与权限之间的分离问题。用户其实质上并没有真正的权限,只有当用户成为了某一个特定的角色的时候才会被赋予特定的权限。可以这么理解,一个普通人,在正常情况下是无法合法持有枪支的,但当这个普通人参加公务员考试,并成为一名刑警之后,他就可以合法持有枪支了。这里普通人为用户,持有枪支为权限,二者并没有直接的关系,而是通过警察这一角色来进行关联,将持有枪支合法化。换句话说,这个普通人永远不能持有枪支,而警察永远拥有持有枪支的权限。每一个用户都有可能成为警察,从而拥有持有枪支的权限。这就是RBAC0中主要解决的权限分离问题。
我们通过为某一用户赋予角色来让用户拥有特定的权限。这里用户、角色、权限三者都可以是多个的。
模型实例获取地址:https://github.com/KienShin/rbac0
转载请注明来源与作者:)
需要注明的是该模型其实已经包括了RBAC1的思想,RBAC0的思想是单纯只有超级管理员才可以做一系列核心操作,而该系统对角色进行了分级也就是引入了RBAC1模型的思想。所以如果严格来说,该模型是基于RBAC0之上的RBAC1模型,大家在学习的时候只需要抛开角色类和用户类中的继承判断就可以得到单纯的RBAC0模型。
数据库模型:
数据库表中需要有USER(用户表)、ROLE(角色表)、PERMISSION(权限表)、PERMISSION_ASSIGNMENT(简称PA)(权限与角色关联表)、USER_ASSIGNMENT(简称UA)(用户与角色关联表),一共五张基础表构成RBAC0模型。
当我们为某一用户指定角色时我们就需要用到UA表了,管理员为用户赋予角色时将uid和rid同时提交到PA表。系统在进行用户角色判断是,则从UA表中抽取其特定uid下的rid。不同的用户可以成为相同的角色,而不同的角色同样也可以被赋予