最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 權(quán)限控制模塊 Casbin

 更新時(shí)間:2022年06月10日 11:36:21   作者:星星在線?  
這篇文章主要介紹了Python 權(quán)限控制模塊 Casbin,Casbin是一個(gè)強(qiáng)大的、高效的開源訪問控制框架,其權(quán)限管理機(jī)制支持多種訪問控制模型,更多相關(guān)內(nèi)容感興趣的朋友可以參考下面文章內(nèi)容

簡(jiǎn)介

Casbin是一個(gè)強(qiáng)大的、高效的開源訪問控制框架,其權(quán)限管理機(jī)制支持多種訪問控制模型。

casbin 的主要特性包括:

  • 支持自定義請(qǐng)求的格式,默認(rèn)的請(qǐng)求格式為{subject, object, action};
  • 具有訪問控制模型 model 和策略 policy 兩個(gè)核心概念;
  • 支持 RBAC 中的多層角色繼承,不止主體可以有角色,資源也可以具有角色;
  • 支持超級(jí)用戶,如 root 或 Administrator,超級(jí)用戶可以不受授權(quán)策略的約束訪問任意資源;
  • 支持多種內(nèi)置的操作符,如 keyMatch,方便對(duì)路徑式的資源進(jìn)行管理,如 /foo/bar 可以映射到 /foo*;

casbin 不做的事情:

  • 身份認(rèn)證
    authentication(即驗(yàn)證用戶的用戶名、密碼),casbin 只負(fù)責(zé)訪問控制。應(yīng)該有其他專門的組件負(fù)責(zé)身份認(rèn)證,然后由 casbin 進(jìn)行訪問控制,二者是相互配合的關(guān)系;
  • 管理用戶列表或角色列表
    casbin 認(rèn)為由項(xiàng)目自身來管理用戶、角色列表更為合適,casbin 假設(shè)所有策略和請(qǐng)求中出現(xiàn)的用戶、角色、資源都是合法有效的。

為什么我要使用 Casbin?

在我做的那么多的項(xiàng)目中,權(quán)限處理經(jīng)常是一個(gè)比較頭疼的問題,而且每個(gè)項(xiàng)目有不同的權(quán)限控制方式,我一直在想有沒有一種通用的權(quán)限控制框架,可以適用各種不同的權(quán)限控制,每個(gè)項(xiàng)目只要做簡(jiǎn)單的修改就能完全適用,直到無意中看到 casbin 這個(gè)庫。

目前我只是在初步的嘗試使用,因此這里只做簡(jiǎn)單的使用記錄,把我在項(xiàng)目中使用的記錄下來,供自己后面繼續(xù)研究使用,也算是給想要使用此庫的 pythoner 一個(gè)例子。

官方文檔地址

官方提供了一個(gè)非常好的編輯器,可以讓我們直接體驗(yàn)和測(cè)試 casbin 的權(quán)限處理。

我們簡(jiǎn)單的以官方提供的例子來做一個(gè)說明,首先 Policy 里面配置的是權(quán)限策略,從權(quán)限策略中可以看出用戶 alice 擁有角色 data2_admin,而角色 data2_admin 對(duì)數(shù)據(jù) data2 有 read/write 權(quán)限,因此用戶 alice 對(duì)數(shù)據(jù) data2 擁有 read/write,可以看到下面的測(cè)試中也是 true。

以上就是我們使用編輯器測(cè)試權(quán)限的過程,只要搞清楚 RBAC 中權(quán)限關(guān)系就可以了。

PyCasbin 模塊的使用

casbin 支持多種權(quán)限模型,我們最常用的是 RBAC,我們就以這種模式為例,來介紹一下在 Python 中怎么來使用。

安裝:

pip install casbin

例子

1.初始化一個(gè) enforcer,傳入兩個(gè)參數(shù):模型文件路徑和策略文件路徑;
模型文件和策略文件都可以到庫上下載,訪問 gitee,搜索 pycasbin,在 examples 目錄下載 rbac_model.conf

import casbin
e = casbin.Enforcer("path/to/model.conf", "path/to/policy.csv")

2.在你的代碼需要進(jìn)行訪問控制的位置,加入如下鉤子;

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 本身擁有很多操作方法,因?yàn)樗С侄喾N權(quán)限模型,所有有些接口是針對(duì)特定的模型設(shè)計(jì)的,但是眾多的接口方法就會(huì)給用戶帶來困惑,因此我在這里只總結(jié) RBAC 權(quán)限模型中我目前用到的這些接口,后期如果有新的接口使用,再加到文檔內(nèi)

在使用之前我們先分析一下常用的權(quán)限處理有哪些?

增加角色權(quán)限:

e.add_policy('super', 'user', 'add')

刪除角色權(quán)限:

e.remove_policy('super', 'user', 'add')

增加用戶權(quán)限:

e.add_permission_for_user('lisi', 'user', 'add')

刪除用戶指定權(quán)限:

e.delete_permission_for_user('lisi', 'user', 'add')

刪除用戶所有權(quán)限:

e.delete_permissions_for_user('zhangsan')

查詢用戶權(quán)限:

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')

刪除權(quán)限:

e.delete_permission('add')

判斷用戶權(quán)限

e.enforce('super', 'user', 'add')

權(quán)限測(cè)試

以上面的示例為例,權(quán)限策略如下:

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

根據(jù)我們的推斷用戶 alice 對(duì)數(shù)據(jù) data1 擁有 read 權(quán)限,使用 pycasbin 判斷權(quán)限是否正常:

e.enforce('alice', 'data1', 'read')
# 輸出 True

這就是我們目前需要用的的接口了,在官方文檔中告訴我們 casbin 不能用來做用戶管理和角色管理,建議由項(xiàng)目自身來管理用戶列表和角色列表,因此我們需要?jiǎng)?chuàng)建單獨(dú)的用戶表和角色表,只不過以前是通過外鍵的方式將他們關(guān)聯(lián)起來,現(xiàn)在只需要?jiǎng)?chuàng)建好表信息就行了,角色與用戶的關(guān)系將通過 casbin 進(jìn)行管理。

到此這篇關(guān)于Python 權(quán)限控制模塊 Casbin的文章就介紹到這了,更多相關(guān)Python Casbin內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python基本數(shù)據(jù)類型之字符串str

    Python基本數(shù)據(jù)類型之字符串str

    字符串是編程中最重要的數(shù)據(jù)類型,也是最常見的,今天小編抽空給大家講解下Python基本數(shù)據(jù)類型之字符串str的實(shí)例代碼,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Python數(shù)據(jù)可視化教程之Matplotlib實(shí)現(xiàn)各種圖表實(shí)例

    Python數(shù)據(jù)可視化教程之Matplotlib實(shí)現(xiàn)各種圖表實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)可視化教程之利用Matplotlib實(shí)現(xiàn)各種圖表的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2019-01-01
  • Python 循環(huán)終止語句的三種方法小結(jié)

    Python 循環(huán)終止語句的三種方法小結(jié)

    今天小編就為大家分享一篇Python 循環(huán)終止語句的三種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • PyQt5中QTimer定時(shí)器的實(shí)例代碼

    PyQt5中QTimer定時(shí)器的實(shí)例代碼

    如果需要在程序中周期性地進(jìn)行某項(xiàng)操作,比如檢測(cè)某種設(shè)備的狀態(tài),就會(huì)用到定時(shí)器,本文主要介紹了PyQt5中QTimer定時(shí)器的實(shí)例代碼,感興趣的可以了解一下
    2021-06-06
  • Python實(shí)戰(zhàn)之實(shí)現(xiàn)獲取動(dòng)態(tài)圖表

    Python實(shí)戰(zhàn)之實(shí)現(xiàn)獲取動(dòng)態(tài)圖表

    這篇文章主要介紹了利用Python實(shí)現(xiàn)動(dòng)態(tài)化圖表,文中的示例代碼介紹詳細(xì),對(duì)我們的工作或?qū)W習(xí)有一定的價(jià)值,感興趣的同學(xué)可以學(xué)習(xí)一下
    2021-12-12
  • Python爬蟲番外篇之Cookie和Session詳解

    Python爬蟲番外篇之Cookie和Session詳解

    這篇文章主要介紹了Python爬蟲番外篇之Cookie和Session詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • pytorch 把圖片數(shù)據(jù)轉(zhuǎn)化成tensor的操作

    pytorch 把圖片數(shù)據(jù)轉(zhuǎn)化成tensor的操作

    這篇文章主要介紹了pytorch 把圖片數(shù)據(jù)轉(zhuǎn)化成tensor的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python換行與不換行的輸出實(shí)例

    Python換行與不換行的輸出實(shí)例

    這篇文章主要介紹了Python換行與不換行的輸出實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 在flask中使用python-dotenv+flask-cli自定義命令(推薦)

    在flask中使用python-dotenv+flask-cli自定義命令(推薦)

    這篇文章主要介紹了在flask中使用python-dotenv+flask-cli自定義命令的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 教你利用pygame模塊制作跳躍小球小游戲

    教你利用pygame模塊制作跳躍小球小游戲

    pygame是一個(gè)專門設(shè)計(jì)來進(jìn)行游戲開發(fā)設(shè)計(jì)的Python模塊,因?yàn)閿[脫了被低級(jí)語言(如機(jī)器語言和匯編語言)的束縛,使用起來非常的簡(jiǎn)單,這篇文章主要給大家介紹了關(guān)于如何利用pygame模塊制作跳躍小球小游戲的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

苍山县| 宜丰县| 四子王旗| 仙居县| 信宜市| 五家渠市| 本溪市| 舒兰市| 临汾市| 南涧| 盘锦市| 孟村| 高雄县| 综艺| 资源县| 重庆市| 宝兴县| 东阳市| 穆棱市| 拉萨市| 习水县| 黄梅县| 天长市| 承德市| 阳朔县| 台安县| 蒲江县| 同德县| 上高县| 灵川县| 镇安县| 孝昌县| 伊宁市| 全椒县| 郎溪县| 察隅县| 汾西县| 古交市| 唐海县| 建瓯市| 上蔡县|