RBAC1访问控制模型继承关系python代码
时间: 2023-10-14 12:26:41 浏览: 49
以下是一个简单的 RBAC1 访问控制模型继承关系的 Python 代码示例:
```python
class Role:
def __init__(self, name):
self.name = name
self.permissions = []
def add_permission(self, permission):
self.permissions.append(permission)
class User:
def __init__(self, name, roles=[]):
self.name = name
self.roles = roles
def has_permission(self, permission):
for role in self.roles:
if permission in role.permissions:
return True
return False
class Admin(Role):
def __init__(self):
super().__init__('admin')
self.add_permission('create')
self.add_permission('read')
self.add_permission('update')
self.add_permission('delete')
class Guest(Role):
def __init__(self):
super().__init__('guest')
self.add_permission('read')
admin = Admin()
guest = Guest()
user1 = User('John', [admin])
user2 = User('Jane', [guest])
print(user1.has_permission('create')) # True
print(user2.has_permission('create')) # False
```
在此示例中,定义了三个类:Role、User 和 Admin。Role 表示角色,User 表示用户,Admin 是 Role 的子类,表示管理员。每个 Role 包含一组权限,而 User 可以有多个 Role。User 类中的 has_permission() 方法检查用户是否具有指定的权限。在此示例中,Admin 具有 create、read、update 和 delete 权限,而 Guest 只具有 read 权限。User1 是 Admin,User2 是 Guest,因此 user1 具有 create 权限,而 user2 不具有。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)