后台管理系统的权限实现,根据权限展示不同的页面

后台菜单权限设计实现思路

设计一款后台产品时,用户角色权限控制是最常遇到的问题,本文以最简单最基本菜单权限设计实现,采用具体案例来说明权限设计应该怎么实现。

原始需求:A企业有员工四名,分别是总裁张三、经理李四、员工王五和肖六,为A公司设计一款后台系统,要求每个员工看到的菜单选项不一致。

1.权限的作用意义
顾名思义,“权”代表“权力”,划分了系统的职权,不同的用户拥有不同的权力划分;“限”代表“限制”,在权力划分的基础上对职能范围进行了限制,本文所述的权限相对简单,赋予不同角色看到不同菜单的权限。

权限控制能较好地解决系统安全问题,避免公司机密资料外泄,同时,不同部门使用系统时互不干扰,因此被企业广泛应用。

2.梳理用户、角色的概念
(1)用户
用户是指系统的登录用户,可以理解为一系列的人员,例如登录用户为张三、李四、王五和肖六这几个人。

(2)角色
角色指用户在系统中担任的角色,是系统赋予用户的头衔,例如A公司后台系统角色可以定义为:总裁、经理、员工。

3.选择合适的权限模型
(1)传统的权限模型
在早期,传统的权限模型就是为用户分配菜单权限,例如张三看到A、B、C菜单,李四看到B、C菜单,王五和肖六看到A、B、C菜单,这种传统的权限模型简单粗暴,直接为用户分配菜单即可,但是随着公司员工激增,在动则数百人的公司里,没一个员工都要分配一次,显然效率太低。
并且,在进行交互设计时,定义数百名用户拥有的菜单权限,那需要写数百行的表格。
在这里插入图片描述

(2)RBAC权限模型
RBAC,即基于角色的访问控制(Role-Based Access Control),是优秀的权限控制模型,主要通过角色和权限建立管理,再赋予用户不同的角色,来实现权限控制的目标。

利用该模型来配置权限,直接优点是角色的数量比用户的数量更少,先把权限赋予角色,即可完成权限的分配;再为用户分配相应的角色,即可直接获得角色拥有的权限。

交互设计的福音,只需定义有限的角色拥有哪些菜单权限即可。
在这里插入图片描述

(3)模型其他注意事项
在选择第二种RBAC权限模型时,需要注意,用户——角色——权限之间并非是一对一的对应关系,例如,一个用户可以拥有多种角色,一个角色也可以拥有多个权限,所以应该是多对多的关系,需要和开发说明清楚。
在这里插入图片描述

4.菜单实现效果
如图所示,通过权限控制后,不同用户登录进去看到的菜单显示都不一致,基于角色来进行菜单展示。

(1)总裁角色,菜单A、B、C
在这里插入图片描述
(2)经理角色,菜单B、C
在这里插入图片描述
(3)员工角色,菜单C
在这里插入图片描述

总结
就是为用户分配角色,角色再对应职责和权限。其用户可有多个角色,角色可有多种权限,在用户和职责中添加联系表,故而可较简单的实现用户权限分配

代码实现思路

后台管理系统中的权限管理是常见的问题,因为,后端管理牵扯到不同工作人员的职责和权限,所以,对于后台管理系统来说,不同的人员登录进入到系统后,看到的菜单(功能)是不一样的,这就是所谓的后台管理系统的权限。

一、后台管理系统的权限怎么弄/如何根据权限展示不同的页面?
1、首先后台管理系统的菜单的做成“活的”,即,菜单不能是纯粹的静态的,而应该是根据后端返回来的数据,来显示菜单的。

2、菜单如何做成活的?
如:
1)、前端登录(给后端发送用户名和密码),后端验证成功后,会根据登录的用户,给前端返回来菜单数据,比如:

[
	{
		“id”:001,
		“title”:“菜单01,
		“url”:“menu01.html”
	},
	{
		“id”:002,
		“title”:“菜单02,
		“url”:“menu02.html”
	},
	{
		“id”:003,
		“title”:“菜单04,
		“url”:“menu04.html”
	}
]

前端只需要把它循环一下,显示在页面上就行。

2)、数据库建立
用户和职责中再建一张角色表,用作联系表

3)、后端处理
根据联系表中的关系查询出不同的数据封装返回给前端,前端循环一下展示出数据

全程最重要在与建立用户和职责的关系表,方便用户和职责的关系构建,也简化了代码实现和数据插入修改

权限设置
后台管理系统,会给每个用户分配权限,分配权限有几个角度: 根据角色分配权限,根据用户分配权限。

如果是根据角色(如:开发人员)分配权限,那么,属于该角色的用户(如果你是开发人员)都会拥有相同的权限。这样相当于批量给人员分配权限。

进一步在角色(批量)分配权限的基础上,可以再针对个别用户进行单独设置权限。

  • 3
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 后台管理系统权限控制是通过内置的 `django.contrib.auth` 应用实现的。具体实现步骤如下: 1. 创建用户模型 首先需要创建一个用户模型,可以继承 `AbstractUser` 或者 `AbstractBaseUser`。可以在 `models.py` 文件中创建用户模型: ```python from django.contrib.auth.models import AbstractUser class User(AbstractUser): pass ``` 2. 修改 `settings.py` 在 `settings.py` 中设置用户模型: ```python AUTH_USER_MODEL = 'myapp.User' ``` 3. 创建权限模型 可以继承 `django.contrib.auth.models.Permission`,创建自定义权限模型。可以在 `models.py` 文件中创建权限模型: ```python from django.contrib.auth.models import Permission class MyPermission(Permission): pass ``` 4. 创建用户组模型 可以继承 `django.contrib.auth.models.Group`,创建自定义用户组模型。可以在 `models.py` 文件中创建用户组模型: ```python from django.contrib.auth.models import Group class MyGroup(Group): pass ``` 5. 创建权限管理页面 可以继承 `django.contrib.auth.admin.PermissionAdmin`,创建自定义权限管理页面。可以在 `admin.py` 文件中创建权限管理页面: ```python from django.contrib.auth.admin import PermissionAdmin class MyPermissionAdmin(PermissionAdmin): pass ``` 6. 创建用户组管理页面 可以继承 `django.contrib.auth.admin.GroupAdmin`,创建自定义用户组管理页面。可以在 `admin.py` 文件中创建用户组管理页面: ```python from django.contrib.auth.admin import GroupAdmin class MyGroupAdmin(GroupAdmin): pass ``` 7. 注册权限管理页面用户组管理页面 在 `admin.py` 文件中注册权限管理页面用户组管理页面: ```python from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User, Group, Permission from .models import MyGroup, MyPermission from .admin import MyGroupAdmin, MyPermissionAdmin admin.site.unregister(User) admin.site.unregister(Group) admin.site.unregister(Permission) admin.site.register(User, UserAdmin) admin.site.register(MyGroup, MyGroupAdmin) admin.site.register(MyPermission, MyPermissionAdmin) ``` 8. 添加权限用户组 可以通过 `add` 方法,将权限添加到用户组中: ```python my_group = MyGroup.objects.get(name='my_group') my_permission = MyPermission.objects.get(codename='my_permission') my_group.permissions.add(my_permission) ``` 9. 检查用户是否拥有某个权限 可以通过 `user.has_perm()` 方法,检查用户是否拥有某个权限: ```python user = User.objects.get(username='my_username') if user.has_perm('myapp.my_permission'): # 用户拥有 my_permission 权限 pass else: # 用户没有 my_permission 权限 pass ``` 以上就是 Django 后台管理系统权限代码实现的一般步骤。具体的实现还需要根据自己的业务需求进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值