rabc的权限控制流程梳理php

整理开发过程中的权限模型设计

常见的权限模型有如下这些;

1,ACL 访问控制列表 ,

2,RBAC 基于角色的权限控制

3,ABAC 基于属性的权限控制 ,

4,PBAC 基于策略的权限控制

以下就是对其中的RBAC的权限控制模型实现描述:

RBAC的实质就是控制不同的角色的访问不同的资源,如果需要删除,编辑一组相同用户的权限,只需要删除该角色下面权限,即可删除一组用户的权限,不需要单独删除某一个用户下面的权限,及通过用户与角色的关系来删除用户的权限,方便管理与控制。

实现权限控制模型主要就是实现以下三大模块

权限的流程图

 

聊完权限控制模型的主要流程和需要实现的三大功能模块,  就要开始聊到权限控制的数据库模型了的,以下就是权限控制的数据库模型“

 

实现权限控制的功能 需要涉及到5张表:

1,用户表(用户的id,名称等基本信息) 2,用户角色表 (用户的id,所属角色id等等,用户具体的属于哪些角色)3,角色表(角色的id,角色的名称) 4,权限表(权限的id,权限的名称,所有的权限列表) 5,用户的权限控制表(角色的id,权限对应的id,主要存储的就是那些角色有哪些权限)

具体的数据库逻辑关系图如下:

完成以上的逻辑之后,就需要着手完成用户的权限验证,为了数据的更加安全还可以做一个用户操作的历史记录,以下就是完成rbac权限模型的五大核心功能。

以下就是权限验证功能的常用代码总结:

 

 

 

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目描述: 该项目主要为XX电信开发,该系统主要完成故障管理、故障查询、和故障单统计等功能,故障管理实现故障单的形成、派出、受理以及审核等功能,故障单的来源主要分为两种方式,手动录入和自动触发,本系统的使用用户有两大类:市网管中心用户,本地网专业分局用户 开发工具:Eclipse 使用技术: Extjs3、Struts2、Spring、Hibernate Annotation(JPA)、JBPM4 + Android + iPhone 运行环境:Solaris+Weblogic Express+Oracle10G+JRE1.6(双机热备部署方案) 架构描述:本系统Web展现层采用了流行的Extjs框架,极大的提高了用户体验,控制层采用Struts2,利用Spring的IoC容器来管理业务对象和Struts2的Action,让Spring的IoC容器将业务对象注入给Struts2的Action,采用DI方式避免了直接依赖查带来的缺点,利用Spring的AOP来做声明式事务,利用Spring的Annotation方式基本达到了零配置,持久层全部使用Hibernate Annotation方式,主要采用的是标准的JPA注解,这样减少了大量的Hibernate映射文件,提高了可维护性,Java与Extjs的通信全部采用JSON格式,该系统中存在故障单的审批流程,因为流程经常改变,所以该系统引入了工作流引擎JBPM4,这样会使流程和业务逻辑分离,能更好的适应需求,另外需要流程审批的即时性,采用Android和iPhone完成了基于无线的审批流程,这样可以随时随地的审批。 项目规模(此项不体现在简历上): 5人,8个月左右 ,200万 本人职务:主力开发人员 责任描述:配合项目经理与客户交流完成需求确认采用快速原型制作工具Axure完成DEMO制作、并参与前期的需求用例的编写,该项目使用了JBPM4,并对JBPM4进行预研,掌握JBPM4的使用,主要是JPDL和JBPM4常用API,并完成Extjs3+Struts2+Spring+Hibernate+JBPM4+Annotaion框架的搭建和规划,并对故障单部分进行设计和编码,应用工作流JBPM4完成开发,另外并负责技术公关,指导其他开发人员,负责解决常见的技术问题
在Django中开发一个RABC(Role-Based Access Control)权限管理系统可以通过以下步骤实现: 1. 创建Django项目并设置数据库连接。 2. 定义用户角色和权限模型。 3. 创建用户认证系统。 4. 实现用户注册、登录和注销功能。 5. 创建角色管理功能,包括角色的增删改查。 6. 创建权限管理功能,包括权限的增删改查。 7. 实现用户角色分配功能,将角色分配给用户。 8. 实现权限角色分配功能,权限分配给角色。 9. 创建中间件来实现权限控制。 10. 创建自定义界面和功能来实现单表操作和复杂操作。 以下是一个简单的示例代码,演示了如何在Django中实现RABC权限管理系统: ```python # models.py from django.db import models from django.contrib.auth.models import AbstractUser class Role(models.Model): name = models.CharField(max_length=50) class Permission(models.Model): name = models.CharField(max_length=50) class User(AbstractUser): roles = models.ManyToManyField(Role) class RolePermission(models.Model): role = models.ForeignKey(Role, on_delete=models.CASCADE) permission = models.ForeignKey(Permission, on_delete=models.CASCADE) # views.py from django.shortcuts import render from django.contrib.auth.decorators import login_required from .models import Role, Permission @login_required def role_list(request): roles = Role.objects.all() return render(request, 'role_list.html', {'roles': roles}) @login_required def permission_list(request): permissions = Permission.objects.all() return render(request, 'permission_list.html', {'permissions': permissions}) # urls.py from django.urls import path from . import views urlpatterns = [ path('roles/', views.role_list, name='role_list'), path('permissions/', views.permission_list, name='permission_list'), ] # middleware.py from django.shortcuts import redirect class RBACMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if not request.user.is_authenticated: return redirect('login') if not self.has_permission(request.user, request.path): return redirect('permission_denied') response = self.get_response(request) return response def has_permission(self, user, path): # 根据用户角色和权限判断是否有权限访问该路径 # 实现自己的权限控制逻辑 return True # settings.py MIDDLEWARE = [ ... 'yourapp.middleware.RBACMiddleware', ... ] ``` 请注意,以上代码只是一个简单的示例,实际开发中还需要根据具体需求进行更详细的设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值