2 权限(组件)

1. 问:为什么程序需要权限控制?

程序开发时的权限控制,对于不同用户使用系统时候就应该有不同的功能,如:

普通员工
部门主管
总监
总裁
所以,只要有不同角色的人员来使用系统,那么就肯定需要权限系统。

2. 问:为什么要开发权限组件?

答:假设你今年25岁,从今天开始写代码到80岁,每年写5个项目,那么你的一生就会写275个项目,保守估计其中应该有150+个都需要用到权限控制,为了以后不再重复的写代码,所以就开发一个权限组件以便之后55年的岁月中使用。 亲,不要太较真哦,你觉得程序员能到80岁么,哈哈哈哈哈哈哈 
偷偷告诉你:老程序员开发速度快,其中一个原因是经验丰富,另外一个就是他自己保留了很多组件,新系统开发时,只需把组件拼凑起来基本就可以完成。

3. 问:web开发中权限指的是什么?

答:web程序是通过 url 的切换来查看不同的页面(功能),所以权限指的其实就是URL,对url控制就是对权限的控制。

结论:一个人有多少个权限就取决于他有多少个URL的访问权限。

第一版表结构设计

问答环节中已得出权限就是URL的结论,那么就可以开始设计表结构了。

  • 一个用户可以有多个权限。
  • 一个权限可以分配给多个用户。

你设计的表结构大概会是这个样子:

现在,此时此刻是不是觉得自己设计出的表结构棒棒哒!!!

But,无论是是否承认,你还是too young too native,因为老汉腚眼一看就有问题....

问题:假设 “老男孩”和“Alex” 这俩货都是老板,老板的权限一定是非常多。那么试想,如果给这俩货分配权限时需要在【用户权限关系表中】添加好多条数据。假设再次需要对老板的权限进行修改时,又需要在【用户权限关系表】中找到这俩人所有的数据进行更新,太他妈烦了吧!!! 类似的,如果给其他相同角色的人来分配权限时,必然会非常繁琐。

权限表结构设计:第二版

之前是人对应权限

现在修改为--角色对应权限

聪明机智的一定在上述的表述中看出了写门道,如果对用户进行角色的划分,然后对角色进行权限的分配,这不就迎刃而解了么。

  • 一个人可以有多个角色。
  • 一个角色可以有多个人。
  • 一个角色可以有多个权限。
  • 一个权限可以分配给多个角色。

表结构设计:

这次调整之后,由原来的【基于用户的权限控制】转换成【基于角色的权限控制】,以后再进行分配权限时只需要给指定角色分配一次权限,给众多用户再次分配指定角色即可。

在django下新建另一个 app

python manage.py startapp app_name
或 django-admin.py startapp app_name

rbac/models.py

小伙子,告诉你一个事实,不经意间,你居然设计出了一个经典的权限访问控制系统:rbac(Role-Based Access Control)基于角色的权限访问控制。你这么优秀,为什么不来老男孩IT教育?路飞学城也行呀! 哈哈哈哈。

注意:现在的设计还不是最终版,但之后的设计都是在此版本基础上扩增的,为了让大家能够更好的理解,我们暂且再此基础上继续开发,直到遇到无法满足的情况,再进行整改。

客户管理之权限控制

学习知识最好的方式就是试错,坑踩多了那么学到的知识自然而然就多了,所以接下里下来我们用《客户管理》系统为示例,提出功能并实现,并且随着功能越来越多,一点点来找出问题,并解决问题。

from django.db import models

class Customer(models.Model):
    """
    客户表
    """
    name = models.CharField(verbose_name=‘姓名‘, max_length=32)
    age = models.CharField(verbose_name=‘年龄‘, max_length=32)
    email = models.EmailField(verbose_name=‘邮箱‘, max_length=32)
    company = models.CharField(verbose_name=‘公司‘, max_length=32)

class Payment(models.Model):
    """
    付费记录
    """
    customer = models.ForeignKey(verbose_name=‘关联客户‘, to=‘Customer‘)
    money = models.IntegerField(verbose_name=‘付费金额‘)
    create_time = models.DateTimeField(verbose_name=‘付费时间‘, auto_now_add=True)

web/models.py

原文地址:https://www.cnblogs.com/foremostxl/p/10332289.html

时间: 2024-08-30 17:44:13

2 权限(组件)的相关文章

ASP.NET通用权限组件实现一

沙发(SF)通用权限验证组件 开篇 上一篇提到了通用权限的设计思路,根据设计思路一步一步的来实现一个相对通用的权限验证组件.在VS2010下用C#语言基于.net framework2.0框架实现具体功能. 配置文件 配置文件为XML格式(SFPermission.xml)公有四个节点分类: 一.AppSet节点:此节点配置一些基础信息. 1 <AppSet> 2 <!--数据库节点名称(必须在Web.config的connectionStrings节点下面)--> 3 <a

ASP.NET通用权限组件思路设计

开篇 做任何系统都离不开和绕不过权限的控制,尤其是B/S系统工作原理的特殊性使得权限控制起来更为繁琐,所以就在想是否可以利用IIS的工作原理,在IIS处理客户端请求的某个入口或出口通过判断URL来达到控制权限的目的,这样就可以减少通常要在每个页面或按钮都要添加的权限验证代码. 通常的权限验证模式 一般的权限验证会控制到菜单(页面)就可以满足,复杂一点的会要求控制到按钮(功能点),这个都需要做一下几点工作: 1.按权限生成菜单,这是所有系统都要做的: 2.在每个页面的开始处添加登录和权限的验证,调

权限组件之录入数据

权限组件之录入数据 1.新建一个django项目 rbac 2.增加一个app应用 3.什么是rbac??? 生成表 4.3张表一写,会生成5张表 5.数据库迁移 6.查看表,没有我们自己写的表???都是自带的表 7.settings配置 8.入口文件 9.重新数据化迁移,查看表 admin  添加数据 10.添加数据   admin 11.创建管理员,用户名.(邮箱可以不用填写).密码 12.登入admin 13.默认没有我们自己写的app里的表,需要注册才会显示表 14.第三张表不用加. 1

权限组件之录入获取登入用户的所有权限

权限组件之录入获取登入用户的所有权限 1.urls.py 2.views.py get请求 3.login.html 页面 post请求 4.用户名或密码错误重新登入 验证用户名密码 登入成功之后做什么呢??? session 5.登入成功可以写session值,下次查看别的页面就知道是谁了. pk指的的主键 6.查看 django_session 表 随机字符串={user_id=3,}   通过取当前用户的id--->然后就可以取当前用户的所有信息. 获取当前用户的所有权限 7.获取当前用户

Django REST framework —— 权限组件源码分析

在上一篇文章中我们已经分析了认证组件源码,我们再来看看权限组件的源码,权限组件相对容易,因为只需要返回True 和False即可 代码 1 class ShoppingCarView(ViewSetMixin, APIView): 2 permission_classes = [MyPermission, ] 3 def list(self,request, *args, **kwargs): 4 """ 5 查看购物车信息 6 :param args: 7 :param k

RestFramework之权限组件

一,RestFramework之权限组件源码解析 restframework的权限组件与认证组件源码类似,都需要我们自己写一个类,然后放在 permission_classes中,或者全局settings中配置: 我们直接看在dispatch()中的权限组件部分干了什么. def initial(self, request, *args, **kwargs): """ Runs anything that needs to occur prior to calling the

RESTful-rest_framework认证组件、权限组件、频率组件-第五篇

认证组件格式: 1 写一个认证类 from rest_framework.authentication import BaseAuthentication class MyAuth(BaseAuthentication): def authenticate(self,request): # request 是封装后的 token = request.query_params.get('token') ret = models.UserToken.objects.filter(token=toke

DAY99 - Rest Framework(四)- 认证组件和权限组件

一.认证组件 1.使用 # 模型层 class User(models.Model): name = models.CharField(max_length=32) pwd = models.CharField(max_length=32) class UserToken(models.Model): user = models.OneToOneField(to='User') token = models.CharField(max_length=64) #myAuth.py from app

Django的rest_framework的权限组件和频率组件源码分析

前言: Django的rest_framework一共有三大组件,分别为认证组件perform_authentication,权限组件check_throttles: 我在前面的博客中已经梳理了认证组件,不知道大家有没有看懂:在这里我把认证的组件的博客地址在贴出来,不清楚的人可以看下 局部设置认证组件的博客:https://www.cnblogs.com/bainianminguo/p/10480887.html 全局设置认证组件的博客:https://www.cnblogs.com/baini