权限管理「建议收藏」

相关名词解释在说权限之前先来了解一下项目和应用之间的关系:在了解了项目和应用二者之间的关系之后我们再来看一下什么是权限管理:权限管理先来看一下官方解释:自己理解:RBAC权限模型功能权限

大家好,又见面了,我是你们的朋友全栈君。

相关名词解释

在说权限之前先来了解一下项目和应用之间的关系

一个项目可以有多个应用,一个应用同样可以服务多个项目;它们二者之间是多对多的关系(manytomany)

在了解了项目和应用二者之间的关系之后我们再来看一下什么是权限管理

权限管理

先来看一下官方解释:

权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。

自己理解:

说白了所谓的权限管理就是根据不同等级的用户对同一个资源进行不同程度的相关操作,等级越高所能进行的相关操作程度越深;我们也可以理解为一个权限就是一个URL

RBAC权限模型 

功能权限管理技术,一般就使用基于角色访问控制技术RBAC(Role Based Access Control)。该技术被广泛运用于各个系统,非常容易掌握。该技术模型如下图示:

RBAC权限模型
RBAC权限模型
RBAC模型尤其在企业管理系统的应用尤为突出

分析及数据相关

分析

首先要分析在RBAC模型中涉及到哪些内容(也就是所需要的表及表结构)

用户

用户:不论在做任何的操作的前提是必须要有相关的用户根据用户自己的状态(登陆/注册)进行下一步操作。可以说用户是基础,任何的操作都是建立在有用户的基础上的,没有用户什么都没法干

角色

实事上我们不会直接把权限赋予给用户,而是通过角色来赋予给用户,因为用户拥有某一种权限是因为用户扮演着某一种角色。
A 是 个经理,他管理着B公司,他拥有b,c,d的权限。实际是不是A有这个权限,而是因为Abo是经理。因为经理拥有b,c,d权限,所以很显然在权限划 分 上,我们会把权限赋予给某一个角色,而
不是赋予给个人。这样带来的好处是如果公司换了经理,那么只要再聘用一个人来做经理就可以了,而不会出现因为权 限在 个人手里导致权限被带走的情况

权限

权限是对资源的一种保护访问.用户要访问资源前提是用户必须有对资源的访问权限.

各表之间的关系

用户表 <—> 角色表 

一个用户可以扮演多个角色,同一个角色也可以属于多个用户(manytomany)

角色表 <—>权限表

同一个角色可以拥有不同的权限,同一级别的权限也可以属于多个角色(manytomany)

数据

创建表关系:

权限管理「建议收藏」
权限管理「建议收藏」

        class User(models.Model):
            name=models.CharField(max_length=32)
            pwd=models.CharField(max_length=32)
            roles=models.ManyToManyField(to="Role")

            def __str__(self): return self.name

        class Role(models.Model):
            title=models.CharField(max_length=32)
            permissions=models.ManyToManyField(to="Permission")

            def __str__(self): return self.title

        class Permission(models.Model):
            title=models.CharField(max_length=32)
            url=models.CharField(max_length=32)

            def __str__(self):return self.title

View Code

由于用户和角色之间及角色和权限之间是多对多的关系,故而又生成了俩张表:

用户——角色表

角色——权限表

正式开始

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/124461.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 解决 pycharm(pip)安装 python 第三方库 pygame) 时下载速度太慢的问题

    解决 pycharm(pip)安装 python 第三方库 pygame) 时下载速度太慢的问题由于pip默认的官方软件源服务器在国外,所以速度慢,导致下载时间长,甚至下载会频繁中断,重试次数过多时会被拒绝。解决办法:更换国内的pip软件源即可。pip指定软件源安装命令格式:pipinstall-i[source_url][package_name]source_url:是软件源地址package_name:库或者包名称例如安装pygame命令:pip…

  • 大数据:数据采集平台之Apache Flume

    大数据:数据采集平台之Apache Flume大数据:数据采集平台之ApacheFlume官网:https://flume.apache.org/Flume是Apache旗下的一款开源、高可靠、高扩展、容易管理、支持客户扩展的数据采集系统。Flume使用JRuby来构建,所以依赖Java运行环境。Flume最初是由Cloudera的工程师设计用于合并日志数据的系统,后来逐渐发展用于处理流数据事件。Flume设计成一个分布式…

  • el-table高度自适应_镶嵌html如何自适应

    el-table高度自适应_镶嵌html如何自适应分析如下图(此方案中使用的是ElementTable官网copy的代码(多用于OA,CMS,ERP这类系统中)如上图大体目前没有问题,但是存在细节问题那就是在table在滚动的过程中表头没有了如果说这里的列比较多,用户需要查看的数据在最后面,每次某个列的数据对应的是什么意思(尤其是表格数字比较多的话,非常恼火),需要上下来回滚动table内容才能解决所以说我们要解决的就是表头固定①(标记…

  • idea集成svn使用教程_idea导入svn项目

    idea集成svn使用教程_idea导入svn项目1.查看svn仓库调出svn视图:连接svn服务器:连接后效果如下:补充:如果输入正确的连接地址后出现错误—系统找不到指定的文件请到设置中检查(File|Settings|VersionControl|Subversion)SVC客户端路径配置的对不对(选中bin目录下的svn.exe)?如果找不到svn.exe,看下图解释2.Idea集成svn如果不小心选错了其他选项,比如cvs,可以在settings中重新选择;…

    2022年10月18日
  • Perl正则表达式(2) – 用正则表达式进行匹配

    Perl正则表达式(2) – 用正则表达式进行匹配Perl正则表达式2.用正则表达式进行匹配2.1用m//进行匹配到目前为止,我们都是讲正则表达式的内容写在一对斜线内,如/fred/。但其实这是m//的简写,其中m代表match,和之前看到的qw//类似,我么可以自行选择用于保卫内容的一堆字符作为边界,所以上面这个例子可以改写为m{fred},m[fred],m!fred!等。在不冲突的情况下,建议使用双斜线//或…

  • python语言中的多行注释符是_Pyhton 单行、多行注释符号使用方法及规范「建议收藏」

    python语言中的多行注释符是_Pyhton 单行、多行注释符号使用方法及规范「建议收藏」python中的注释有多种,有单行注释,多行注释,批量注释,中文注释也是常用的。python注释也有自己的规范,在文章中会介绍到。注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。# 在学习python的朋友们,强烈推荐加入PythonQQ群。一、python单行注释符号(#)井号(#)常被用作单行注释符号,在代码…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号