Python 权限控制模块 Casbin
作者:星星在线? 发布时间:2022-09-21 07:35:46
简介
Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。
casbin 的主要特性包括:
支持自定义请求的格式,默认的请求格式为{subject, object, action};
具有访问控制模型 model 和策略 policy 两个核心概念;
支持 RBAC 中的多层角色继承,不止主体可以有角色,资源也可以具有角色;
支持超级用户,如 root 或 Administrator,超级用户可以不受授权策略的约束访问任意资源;
支持多种内置的操作符,如 keyMatch,方便对路径式的资源进行管理,如 /foo/bar 可以映射到 /foo*;
casbin 不做的事情:
身份认证
authentication(即验证用户的用户名、密码),casbin 只负责访问控制。应该有其他专门的组件负责身份认证,然后由 casbin 进行访问控制,二者是相互配合的关系;管理用户列表或角色列表
casbin 认为由项目自身来管理用户、角色列表更为合适,casbin 假设所有策略和请求中出现的用户、角色、资源都是合法有效的。
为什么我要使用 Casbin?
在我做的那么多的项目中,权限处理经常是一个比较头疼的问题,而且每个项目有不同的权限控制方式,我一直在想有没有一种通用的权限控制框架,可以适用各种不同的权限控制,每个项目只要做简单的修改就能完全适用,直到无意中看到 casbin 这个库。
目前我只是在初步的尝试使用,因此这里只做简单的使用记录,把我在项目中使用的记录下来,供自己后面继续研究使用,也算是给想要使用此库的 pythoner 一个例子。
官方文档地址
官方提供了一个非常好的编辑器,可以让我们直接体验和测试 casbin 的权限处理。
我们简单的以官方提供的例子来做一个说明,首先 Policy 里面配置的是权限策略,从权限策略中可以看出用户 alice 拥有角色 data2_admin,而角色 data2_admin 对数据 data2 有 read/write 权限,因此用户 alice 对数据 data2 拥有 read/write,可以看到下面的测试中也是 true。
来源:https://juejin.cn/post/7085490095955902501
猜你喜欢
- python刷CSDN访问量import requestsimport reimport timepayload = ""
- 为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从19
- 以前我浏览博客的时候记得别人说过,BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary
- 保存的文件有4个: checkpointmodel-parameters.bin-46000.data-00000-of-00001mode
- 本文主要介绍了python opencv 找出图像中的最大轮廓并填充,分享给大家,具体如下:import cv2import numpy a
- 本程序属于一种特别的方法。使用范围比较有限,而且有一定的危险性。借鉴了asp后门里的一些方法。由于读取某IP的网卡MAC地址本程序通过调用a
- 1.理解mask()和setmask()一般是在pyqt绘图时常见,而且在显示不规则图形时更是常见。参考书籍上说:setMask()函数的作
- 一般情况下,导出超时可能都是以下三种情况:一、sql语句复杂,查询时间过长;二、处理查询后数据逻辑冗余;三、数据量过大导致响应超时。接下来分
- 从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数。可是,在协程中, yield 通常出现在表达式的右边(例如, da
- 同时,关于datetime也是简单介绍。因为有很多东西需要自己去使用,去查帮助才最有效。例子:计算上一个星期五并输出。解答:import d
- 本文实例讲述了Python实现PS滤镜中马赛克效果。分享给大家供大家参考,具体如下:这里利用 Python 实现PS 滤镜中的马赛克效果,具
- startswith()方法Python startswith() 方法用于检查字符串是否是以指定子字符串开头如果是则返回 True,否则返
- 偶然在Google发现了他们的用户体验设计原则,因此翻译作一下记录。1.以人为本 —他们的生活、他们的工作和他们的梦想2.珍惜每一毫秒的时间
- 前言:最近碰到业务需要根据PSD文件实现PSD文件解析图层功能,搜到了Python的一个解析PSD的库。这个库就是psd-tools,psd
- 进程进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。进程是系统进行资源分配和调度的一个独立单位。进程是由代码
- 今天解析DEDECMS时发现deder的MYSQL时间字段,都是用`senddata` int(10) unsigned NOT NULL
- 当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢
- 如下所示:import cv2vidcap = cv2.VideoCapture('005.avi')success,ima
- 本文采用OpenCV3和Python3 来实现静态图片的人脸识别,采用的是Haar文件级联。 首先需要将OpenCV3源代码中找到data文
- 实时读取logstash日志,有异常错误keywork即触发报警。# /usr/bin/env python3# -*- coding: u