Policy Storage
ใน Casbin, การจัดเก็บนโยบายนั้นได้รับการพัฒนาในรูปแบบของ adapter
การโหลดนโยบายจากไฟล์ .CSV
นี่คือวิธีที่พบมากที่สุดในการใช้งาน Casbin มันง่ายต่อการเรียนรู้สำหรับผู้เริ่มต้นและสะดวกสำหรับการแชร์เมื่อคุณขอความช่วยเหลือจากทีม Casbin
เนื้อหาของไฟล์ .CSV
examples/rbac_policy.csv มีดังนี้:
p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin
หากไฟล์ของคุณมีเครื่องหมายจุลภาค, คุณควรห่อมันด้วยเครื่องหมายคำพูด ตัวอย่างเช่น:
p, alice, "data1,data2", read --correct
p, alice, data1,data2, read --incorrect (the whole phrase "data1,data2" should be wrapped in double quotes)
หากไฟล์ของคุณมีเครื่องหมายจุลภาคและเครื่องหมายคำพูด, คุณควรห่อฟิลด์ด้วยเครื่องหมายคำพูดและทำการเพิ่มเครื่องหมายคำพูดที่ฝังอยู่เป็นสองเท่า
p, alice, data, "r.act in (""get"", ""post"")" --correct
p, alice, data, "r.act in ("get", "post")" --incorrect (you should use "" to escape "")
ปัญหาที่เกี่ยวข้อง: casbin#886
Adapter API
Method | Type | Description |
---|---|---|
LoadPolicy() | basic | โหลดกฎนโยบายทั้งหมดจากที่เก็บข้อมูล |
SavePolicy() | basic | บันทึกกฎนโยบายทั้งหมดไปยังที่เก็บข้อมูล |
AddPolicy() | optional | เพิ่มกฎนโยบายไปยังที่เก็บข้อมูล |
RemovePolicy() | optional | ลบกฎนโยบายออกจากที่เก็บข้อมูล |
RemoveFilteredPolicy() | optional | ลบกฎนโยบายที่ตรงกับตัวกรองออกจากที่เก็บข้อมูล |
รูปแบบการจัดเก็บข้อมูลในฐานข้อมูล
ไฟล์นโยบายของคุณ
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, admin
โครงสร้างฐานข้อมูลที่สอดคล้องกัน (เช่น MySQL)
id | ptype | v0 | v1 | v2 | v3 | v4 | v5 |
---|---|---|---|---|---|---|---|
1 | p | data2_admin | data2 | read | |||
2 | p | data2_admin | data2 | write | |||
3 | g | alice | admin |
Meaning of each column
id
: The primary key in the database. It does not exist as part of thecasbin policy
. The way it is generated depends on the specific adapter.ptype
: It corresponds top
,g
,g2
, etc.v0-v5
: The column names have no specific meaning and correspond to the values in thepolicy csv
from left to right. The number of columns depends on how many you define yourself. In theory, there can be an infinite number of columns, but generally only 6 columns are implemented in the adapter. If this is not enough for you, please submit an issue to the corresponding adapter repository.
Adapter Details
For more details about the use of the adapter API and database table structure design, please visit: /docs/adapters