ข้ามไปยังเนื้อหาหลัก

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

MethodTypeDescription
LoadPolicy()basicโหลดกฎนโยบายทั้งหมดจากที่เก็บข้อมูล
SavePolicy()basicบันทึกกฎนโยบายทั้งหมดไปยังที่เก็บข้อมูล
AddPolicy()optionalเพิ่มกฎนโยบายไปยังที่เก็บข้อมูล
RemovePolicy()optionalลบกฎนโยบายออกจากที่เก็บข้อมูล
RemoveFilteredPolicy()optionalลบกฎนโยบายที่ตรงกับตัวกรองออกจากที่เก็บข้อมูล

รูปแบบการจัดเก็บข้อมูลในฐานข้อมูล

ไฟล์นโยบายของคุณ

p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, admin

โครงสร้างฐานข้อมูลที่สอดคล้องกัน (เช่น MySQL)

idptypev0v1v2v3v4v5
1pdata2_admindata2read
2pdata2_admindata2write
3galiceadmin

Meaning of each column

  • id: The primary key in the database. It does not exist as part of the casbin policy. The way it is generated depends on the specific adapter.

  • ptype: It corresponds to p, g, g2, etc.

  • v0-v5: The column names have no specific meaning and correspond to the values in the policy 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