<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Casbin是一個強大的、高效的開源存取控制框架,其許可權管理機制支援多種存取控制模型。
casbin 的主要特性包括:
casbin 不做的事情:
在我做的那麼多的專案中,許可權處理經常是一個比較頭疼的問題,而且每個專案有不同的許可權控制方式,我一直在想有沒有一種通用的許可權控制框架,可以適用各種不同的許可權控制,每個專案只要做簡單的修改就能完全適用,直到無意中看到 casbin 這個庫。
目前我只是在初步的嘗試使用,因此這裡只做簡單的使用記錄,把我在專案中使用的記錄下來,供自己後面繼續研究使用,也算是給想要使用此庫的 pythoner 一個例子。
官方提供了一個非常好的編輯器,可以讓我們直接體驗和測試 casbin 的許可權處理。
我們簡單的以官方提供的例子來做一個說明,首先 Policy 裡面設定的是許可權策略,從許可權策略中可以看出使用者 alice 擁有角色 data2_admin,而角色 data2_admin 對資料 data2 有 read/write 許可權,因此使用者 alice 對資料 data2 擁有 read/write,可以看到下面的測試中也是 true。
以上就是我們使用編輯器測試許可權的過程,只要搞清楚 RBAC 中許可權關係就可以了。
casbin 支援多種許可權模型,我們最常用的是 RBAC,我們就以這種模式為例,來介紹一下在 Python 中怎麼來使用。
安裝:
pip install casbin
1.初始化一個 enforcer,傳入兩個引數:模型檔案路徑和策略檔案路徑;
模型檔案和策略檔案都可以到庫上下載,存取 gitee,搜尋 pycasbin,在 examples 目錄下載 rbac_model.conf
import casbin e = casbin.Enforcer("path/to/model.conf", "path/to/policy.csv")
2.在你的程式碼需要進行存取控制的位置,加入如下勾點;
sub = "alice" # the user that wants to access a resource. obj = "data1" # the resource that is going to be accessed. act = "read" # the operation that the user performs on the resource. if e.enforce(sub, obj, act): # permit alice to read data1 pass else: # deny the request, show an error pass
pycasbin 本身擁有很多操作方法,因為它支援多種許可權模型,所有有些介面是針對特定的模型設計的,但是眾多的介面方法就會給使用者帶來困惑,因此我在這裡只總結 RBAC 許可權模型中我目前用到的這些介面,後期如果有新的介面使用,再加到檔案內
在使用之前我們先分析一下常用的許可權處理有哪些?
增加角色許可權:
e.add_policy('super', 'user', 'add')
刪除角色許可權:
e.remove_policy('super', 'user', 'add')
增加使用者許可權:
e.add_permission_for_user('lisi', 'user', 'add')
刪除使用者指定許可權:
e.delete_permission_for_user('lisi', 'user', 'add')
刪除使用者所有許可權:
e.delete_permissions_for_user('zhangsan')
查詢使用者許可權:
e.get_permissions_for_user('lisi')
增加使用者角色:
e.add_role_for_user('zhangsan', 'admin')
刪除使用者指定角色:
e.delete_role_for_user('zhangsan', 'admin')
刪除使用者所有角色:
e.delete_roles_for_user('zhangsan', 'admin')
查詢使用者角色:
e.get_roles_for_user('zhangsan')
刪除使用者:
e.delete_user('zhangsan')
刪除角色:
e.delete_role('admin')
刪除許可權:
e.delete_permission('add')
判斷使用者許可權
e.enforce('super', 'user', 'add')
以上面的範例為例,許可權策略如下:
p, data2_admin, data2, read p, data2_admin, data2, write p, data1_admin, data1, read p, data1_admin, data1, write g, alice, data1_admin g, bob, data2_admin
根據我們的推斷使用者 alice 對資料 data1 擁有 read 許可權,使用 pycasbin 判斷許可權是否正常:
e.enforce('alice', 'data1', 'read') # 輸出 True
這就是我們目前需要用的的介面了,在官方檔案中告訴我們 casbin 不能用來做使用者管理和角色管理,建議由專案自身來管理使用者列表和角色列表,因此我們需要建立單獨的使用者表和角色表,只不過以前是通過外來鍵的方式將他們關聯起來,現在只需要建立好表資訊就行了,角色與使用者的關係將通過 casbin 進行管理。
到此這篇關於Python 許可權控制模組 Casbin的文章就介紹到這了,更多相關Python Casbin內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45