成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發(fā) 后端
Casbin是一個強大的、高效的開源訪問控制框架,其權(quán)限管理機制支持多種訪問控制模型。

 [[416094]]

簡介

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

casbin 的主要特性包括:

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

casbin 不做的事情:

  • 身份認證

authentication(即驗證用戶的用戶名、密碼),casbin 只負責訪問控制。應(yīng)該有其他專門的組件負責身份認證,然后由 casbin 進行訪問控制,二者是相互配合的關(guān)系;

  • 管理用戶列表或角色列表

casbin 認為由項目自身來管理用戶、角色列表更為合適,casbin 假設(shè)所有策略和請求中出現(xiàn)的用戶、角色、資源都是合法有效的。

為什么我要使用 Casbin?

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

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

官方文檔地址:https://casbin.org/docs/zh-CN/overview

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

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

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

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

PyCasbin 模塊的使用

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

安裝

  1. pip install casbin 

一個簡單的例子

1.初始化一個 enforcer,傳入兩個參數(shù):模型文件路徑和策略文件路徑;

模型文件和策略文件都可以到庫上下載,訪問 gitee,搜索 pycasbin,在 examples 目錄下載 rbac_model.conf

  1. import casbin 
  2. e = casbin.Enforcer("path/to/model.conf""path/to/policy.csv"

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

  1. sub = "alice"  # the user that wants to access a resource. 
  2. obj = "data1"  # the resource that is going to be accessed. 
  3. act = "read"  # the operation that the user performs on the resource. 
  4.  
  5. if e.enforce(sub, obj, act): 
  6.     # permit alice to read data1 
  7.     pass 
  8. else
  9.     # deny the request, show an error 
  10.     pass 

pycasbin 本身擁有很多操作方法,因為它支持多種權(quán)限模型,所有有些接口是針對特定的模型設(shè)計的,但是眾多的接口方法就會給用戶帶來困惑,因此我在這里只總結(jié) RBAC 權(quán)限模型中我目前用到的這些接口,后期如果有新的接口使用,再加到文檔內(nèi)

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

增加角色權(quán)限

  1. e.add_policy('super''user''add'

刪除角色權(quán)限

  1. e.remove_policy('super''user''add'

增加用戶權(quán)限

  1. e.add_permission_for_user('lisi''user''add'

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

  1. e.delete_permission_for_user('lisi''user''add'

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

  1. e.delete_permissions_for_user('zhangsan'

查詢用戶權(quán)限

  1. e.get_permissions_for_user('lisi'

增加用戶角色

  1. e.add_role_for_user('zhangsan''admin'

刪除用戶指定角色

  1. e.delete_role_for_user('zhangsan''admin'

刪除用戶所有角色

  1. e.delete_roles_for_user('zhangsan''admin'

查詢用戶角色

  1. e.get_roles_for_user('zhangsan'

刪除用戶

  1. e.delete_user('zhangsan'

刪除角色

  1. e.delete_role('admin'

刪除權(quán)限

  1. e.delete_permission('add'

判斷用戶權(quán)限

  1. e.enforce('super''user''add'

權(quán)限測試

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

  1. p, data2_admin, data2, read 
  2. p, data2_admin, data2, write 
  3. p, data1_admin, data1, read 
  4. p, data1_admin, data1, write 
  5.  
  6. g, alice, data1_admin 
  7. g, bob, data2_admin 

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

  1. e.enforce('alice''data1''read'
  2.  
  3. # 輸出 True 

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

 

責任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-04-02 08:02:10

Gin集成Casbin開源

2023-11-02 09:03:24

權(quán)限管理系統(tǒng)

2011-03-03 15:02:22

proftpd權(quán)限

2011-03-03 11:13:11

Pureftpd

2012-12-11 10:15:02

Winform開發(fā)框架

2017-12-20 17:50:32

2021-10-28 19:06:56

Casbin配置設(shè)計

2022-08-15 08:42:46

權(quán)限控制Spring

2022-08-30 08:36:13

Spring權(quán)限控制

2022-08-30 08:55:49

Spring權(quán)限控制

2022-08-30 08:43:11

Spring權(quán)限控制

2022-08-15 08:45:21

Spring權(quán)限控制

2010-06-02 09:58:53

SVN權(quán)限控制

2022-08-30 08:50:07

Spring權(quán)限控制

2011-04-12 10:16:18

UNIX權(quán)限

2011-01-24 16:10:50

Samba權(quán)限控制

2009-09-11 08:41:59

Linux文件系統(tǒng)ACLs權(quán)限控制

2017-04-25 10:46:57

Spring BootRESRful API權(quán)限

2009-02-20 12:06:04

Vista完全控制權(quán)限安全性

2010-04-16 17:58:22

Unix操作系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 黄色在线观看网址 | 9191av| 色偷偷噜噜噜亚洲男人 | 色视频www在线播放国产人成 | 久久久久久久久久久久久9999 | 久久久久久久久久久久一区二区 | 国产999精品久久久影片官网 | 国产精品亚洲精品日韩已方 | 国产免费自拍 | 国产成人免费视频 | 亚洲综合大片69999 | 色噜噜色综合 | 91福利网 | 日韩在线播放网址 | 在线精品一区二区三区 | 99热热热| 亚洲一区二区三区在线视频 | 亚州精品成人 | www.黄色片视频 | 国产美女特级嫩嫩嫩bbb片 | 国产一区二区三区 | 国产一区二区不卡 | 亚洲精品久久久久久下一站 | a国产视频 | 国产高清视频一区二区 | 国产欧美一区二区三区日本久久久 | 欧美一级片在线观看 | 99这里只有精品 | 国产在线视频一区 | 久久黄色网 | 91精品在线播放 | 国产精品电影网 | 久久免费看 | 日韩精品一区二区三区 | 免费视频久久久久 | 精品日韩一区二区三区 | 91精品国模一区二区三区 | 亚洲国产精品久久久久秋霞不卡 | 欧美一级二级三级视频 | 青青99| 久久久久久久一区 |