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

Management API

API พื้นฐานที่ให้การสนับสนุนการจัดการนโยบาย Casbin อย่างเต็มรูปแบบ

Filtered API

เกือบทุก api ที่กรองข้อมูลมีพารามิเตอร์เหมือนกัน (fieldIndex int, fieldValues ...string) fieldIndex เป็นดัชนีที่เริ่มต้นการจับคู่, fieldValues หมายถึงค่าที่ผลลัพธ์ควรจะมี โปรดทราบว่าสตริงว่างใน fieldValues อาจเป็นคำใดก็ได้

ตัวอย่าง:

p, alice, book, read
p, bob, book, read
p, bob, book, write
p, alice, pen, get
p, bob, pen ,get
e.GetFilteredPolicy(1, "book") // will return: [[alice book read] [bob book read] [bob book write]]

e.GetFilteredPolicy(1, "book", "read") // will return: [[alice book read] [bob book read]]

e.GetFilteredPolicy(0, "alice", "", "read") // will return: [[alice book read]]

e.GetFilteredPolicy(0, "alice") // will return: [[alice book read] [alice pen get]]

อ้างอิง

ตัวแปรสากล e เป็นอินสแตนซ์ของ Enforcer

e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")

Enforce()

Enforce ตัดสินใจว่า "subject" สามารถเข้าถึง "object" ด้วยการดำเนินการ "action" หรือไม่, พารามิเตอร์ที่ใช้ปกติคือ: (sub, obj, act)

ตัวอย่าง:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher ใช้ matcher ที่กำหนดเองเพื่อตัดสินใจว่า "subject" สามารถเข้าถึง "object" ด้วยการดำเนินการ "action" หรือไม่, พารามิเตอร์ที่ใช้ปกติคือ: (matcher, sub, obj, act), ใช้ matcher ของโมเดลเป็นค่าเริ่มต้นเมื่อ matcher เป็น ""

ตัวอย่าง:

ok, err := e.EnforceWithMatcher(matcher, request)

EnforceEx()

EnforceEx อธิบายการบังคับใช้โดยแจ้งกฎที่ตรงกัน

ตัวอย่าง:

ok, reason, err := e.EnforceEx(request)

EnforceExWithMatcher()

EnforceExWithMatcher ใช้ matcher ที่กำหนดเองและอธิบายการบังคับใช้โดยแจ้งกฎที่ตรงกัน

ตัวอย่าง:

ok, reason, err := e.EnforceExWithMatcher(matcher, request)

BatchEnforce()

BatchEnforce บังคับใช้แต่ละคำขอและคืนผลลัพธ์ในอาร์เรย์ของ bool

ตัวอย่าง:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects ได้รับรายการของ subjects ที่ปรากฏในนโยบายปัจจุบัน

ตัวอย่าง:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects ได้รับรายการของ subjects ที่ปรากฏในนโยบายที่มีชื่อ

ตัวอย่าง:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects ได้รับรายการของ objects ที่ปรากฏในนโยบายปัจจุบัน

ตัวอย่าง:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects ได้รับรายการของ objects ที่ปรากฏในนโยบายที่มีชื่อ

ตัวอย่าง:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions ได้รับรายการของ actions ที่ปรากฏในนโยบายปัจจุบัน

ตัวอย่าง:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions ได้รับรายการของ actions ที่ปรากฏในนโยบายที่มีชื่อ

ตัวอย่าง:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles ได้รับรายการของ roles ที่ปรากฏในนโยบายปัจจุบัน

ตัวอย่าง:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles ได้รับรายการของ roles ที่ปรากฏในนโยบายที่มีชื่อ

ตัวอย่าง:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy ได้รับกฎการอนุญาตทั้งหมดในนโยบาย

ตัวอย่าง:

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy ได้รับกฎการอนุญาตทั้งหมดในนโยบาย, สามารถระบุตัวกรองฟิลด์ได้

ตัวอย่าง:

filteredPolicy := e.GetFilteredPolicy(0, "alice")

GetNamedPolicy()

GetNamedPolicy ได้รับกฎการอนุญาตทั้งหมดในนโยบายที่มีชื่อ

ตัวอย่าง:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy ได้รับกฎการอนุญาตทั้งหมดในนโยบายที่มีชื่อ, สามารถระบุตัวกรองฟิลด์ได้

ตัวอย่าง:

filteredNamedPolicy = e.GetFilteredNamedPolicy("p", 0, "bob")

GetGroupingPolicy()

GetGroupingPolicy ได้รับกฎการสืบทอดบทบาททั้งหมดในนโยบาย

ตัวอย่าง:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy ได้รับกฎการสืบทอดบทบาททั้งหมดในนโยบาย, สามารถระบุตัวกรองฟิลด์ได้

ตัวอย่าง:

filteredGroupingPolicy := e.GetFilteredGroupingPolicy(0, "alice")

GetNamedGroupingPolicy()

GetNamedGroupingPolicy ได้รับกฎการสืบทอดบทบาททั้งหมดในนโยบาย

ตัวอย่าง:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy ได้รับกฎการสืบทอดบทบาททั้งหมดในนโยบาย

ตัวอย่าง:

namedGroupingPolicy := e.GetFilteredNamedGroupingPolicy("g", 0, "alice")

HasPolicy()

HasPolicy กำหนดว่ามีกฎการอนุญาตหรือไม่

ตัวอย่าง:

hasPolicy := e.HasPolicy("data2_admin", "data2", "read")

HasNamedPolicy()

HasNamedPolicy กำหนดว่ามีกฎการอนุญาตที่มีชื่อหรือไม่

ตัวอย่าง:

hasNamedPolicy := e.HasNamedPolicy("p", "data2_admin", "data2", "read")

AddPolicy()

AddPolicy เพิ่มกฎการอนุญาตลงในนโยบายปัจจุบัน หากกฎนั้นมีอยู่แล้ว ฟังก์ชันจะคืนค่าเป็น false และกฎนั้นจะไม่ถูกเพิ่ม มิฉะนั้น ฟังก์ชันจะคืนค่าเป็น true โดยการเพิ่มกฎใหม่

ตัวอย่าง:

added := e.AddPolicy('eve', 'data3', 'read')

AddPolicies()

AddPolicies เพิ่มกฎการอนุญาตลงในนโยบายปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกเพิ่มลงในนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกเพิ่มลงในนโยบายปัจจุบัน

ตัวอย่าง:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()

AddPoliciesEx เพิ่มกฎการอนุญาตลงในนโยบายปัจจุบัน หากกฎนั้นมีอยู่แล้ว กฎนั้นจะไม่ถูกเพิ่ม แต่ไม่เหมือนกับ AddPolicies กฎอื่นที่ไม่มีอยู่จะถูกเพิ่มแทนที่จะคืนค่าเป็น false โดยตรง

ตัวอย่าง:

ok, err := e.AddPoliciesEx([][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

AddNamedPolicy()

AddNamedPolicy เพิ่มกฎการอนุญาตลงในนโยบายที่มีชื่อปัจจุบัน หากกฎนั้นมีอยู่แล้ว ฟังก์ชันจะคืนค่าเป็น false และกฎนั้นจะไม่ถูกเพิ่ม มิฉะนั้น ฟังก์ชันจะคืนค่าเป็น true โดยการเพิ่มกฎใหม่

ตัวอย่าง:

added := e.AddNamedPolicy("p", "eve", "data3", "read")

AddNamedPolicies()

AddNamedPolicies เพิ่มกฎการอนุญาตลงในนโยบายที่มีชื่อปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกเพิ่มลงในนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกเพิ่มลงในนโยบายปัจจุบัน

ตัวอย่าง:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddNamedPolicies("p", rules)

AddNamedPoliciesEx()

AddNamedPoliciesEx เพิ่มกฎการอนุญาตลงในนโยบายที่มีชื่อปัจจุบัน หากกฎนั้นมีอยู่แล้ว กฎนั้นจะไม่ถูกเพิ่ม แต่ไม่เหมือนกับ AddNamedPolicies กฎอื่นที่ไม่มีอยู่จะถูกเพิ่มแทนที่จะคืนค่าเป็น false โดยตรง

ตัวอย่าง:

ok, err := e.AddNamedPoliciesEx("p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

SelfAddPoliciesEx()

SelfAddPoliciesEx เพิ่มกฎการอนุญาตลงในนโยบายที่มีชื่อปัจจุบันโดยไม่แจ้งเตือนผู้ดูแล หากกฎนั้นมีอยู่แล้ว กฎนั้นจะไม่ถูกเพิ่ม แต่ไม่เหมือนกับ SelfAddPolicies กฎอื่นที่ไม่มีอยู่จะถูกเพิ่มแทนที่จะคืนค่าเป็น false โดยตรง

ตัวอย่าง:

ok, err := e.SelfAddPoliciesEx("p", "p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

RemovePolicy()

RemovePolicy ลบกฎการอนุญาตออกจากนโยบายปัจจุบัน

ตัวอย่าง:

removed := e.RemovePolicy("alice", "data1", "read")

RemovePolicies()

RemovePolicies ลบกฎการอนุญาตออกจากนโยบายปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกลบออกจากนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกลบออกจากนโยบายปัจจุบัน

ตัวอย่าง:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

RemoveFilteredPolicy ลบกฎการอนุญาตออกจากนโยบายปัจจุบัน สามารถระบุตัวกรองฟิลด์ได้ RemovePolicy ลบกฎการอนุญาตออกจากนโยบายปัจจุบัน

ตัวอย่าง:

removed := e.RemoveFilteredPolicy(0, "alice", "data1", "read")

RemoveNamedPolicy()

RemoveNamedPolicy ลบกฎการอนุญาตออกจากนโยบายที่มีชื่อปัจจุบัน

ตัวอย่าง:

removed := e.RemoveNamedPolicy("p", "alice", "data1", "read")

RemoveNamedPolicies()

RemoveNamedPolicies ลบกฎการอนุญาตออกจากนโยบายที่มีชื่อปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกลบออกจากนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกลบออกจากนโยบายปัจจุบัน

ตัวอย่างเช่น:

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemoveNamedPolicies("p", rules)

RemoveFilteredNamedPolicy()

RemoveFilteredNamedPolicy ลบกฎการอนุญาตออกจากนโยบายที่มีชื่อปัจจุบัน สามารถระบุตัวกรองฟิลด์ได้

ตัวอย่างเช่น:

removed := e.RemoveFilteredNamedPolicy("p", 0, "alice", "data1", "read")

HasGroupingPolicy()

HasGroupingPolicy ตรวจสอบว่ามีกฎการสืบทอดบทบาทหรือไม่

ตัวอย่างเช่น:

has := e.HasGroupingPolicy("alice", "data2_admin")

HasNamedGroupingPolicy()

HasNamedGroupingPolicy ตรวจสอบว่ามีกฎการสืบทอดบทบาทที่มีชื่อหรือไม่

ตัวอย่างเช่น:

has := e.HasNamedGroupingPolicy("g", "alice", "data2_admin")

AddGroupingPolicy()

AddGroupingPolicy เพิ่มกฎการสืบทอดบทบาทเข้าไปในนโยบายปัจจุบัน หากกฎนั้นมีอยู่แล้ว ฟังก์ชันจะคืนค่าเป็น false และกฎนั้นจะไม่ถูกเพิ่ม มิฉะนั้น ฟังก์ชันจะคืนค่าเป็น true โดยการเพิ่มกฎใหม่

ตัวอย่างเช่น:

added := e.AddGroupingPolicy("group1", "data2_admin")

AddGroupingPolicies()

AddGroupingPolicies เพิ่มกฎการสืบทอดบทบาทเข้าไปในนโยบายปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกเพิ่มเข้าไปในนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกเพิ่มเข้าไปในนโยบายปัจจุบัน

ตัวอย่างเช่น:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx เพิ่มกฎการสืบทอดบทบาทเข้าไปในนโยบายปัจจุบัน หากกฎนั้นมีอยู่แล้ว กฎนั้นจะไม่ถูกเพิ่ม แต่ไม่เหมือนกับ AddGroupingPolicies กฎอื่นที่ไม่มีอยู่จะถูกเพิ่มแทนที่จะคืนค่าเป็น false โดยตรง

ตัวอย่างเช่น:

ok, err := e.AddGroupingPoliciesEx([][]string{{"user1", "member"}, {"user2", "member"}})

AddNamedGroupingPolicy()

AddNamedGroupingPolicy เพิ่มกฎการสืบทอดบทบาทที่มีชื่อเข้าไปในนโยบายปัจจุบัน หากกฎนั้นมีอยู่แล้ว ฟังก์ชันจะคืนค่าเป็น false และกฎนั้นจะไม่ถูกเพิ่ม มิฉะนั้น ฟังก์ชันจะคืนค่าเป็น true โดยการเพิ่มกฎใหม่

ตัวอย่างเช่น:

added := e.AddNamedGroupingPolicy("g", "group1", "data2_admin")

AddNamedGroupingPolicies()

AddNamedGroupingPolicies เพิ่มกฎการสืบทอดบทบาทที่มีชื่อเข้าไปในนโยบายปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกเพิ่มเข้าไปในนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกเพิ่มเข้าไปในนโยบายปัจจุบัน

ตัวอย่างเช่น:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddNamedGroupingPolicies("g", rules)

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx เพิ่มกฎการสืบทอดบทบาทที่มีชื่อเข้าไปในนโยบายปัจจุบัน หากกฎนั้นมีอยู่แล้ว กฎนั้นจะไม่ถูกเพิ่ม แต่ไม่เหมือนกับ AddNamedGroupingPolicies กฎอื่นที่ไม่มีอยู่จะถูกเพิ่มแทนที่จะคืนค่าเป็น false โดยตรง

ตัวอย่างเช่น:

ok, err := e.AddNamedGroupingPoliciesEx("g", [][]string{{"user1", "member"}, {"user2", "member"}})

RemoveGroupingPolicy()

RemoveGroupingPolicy ลบกฎการสืบทอดบทบาทออกจากนโยบายปัจจุบัน

ตัวอย่างเช่น:

removed := e.RemoveGroupingPolicy("alice", "data2_admin")

RemoveGroupingPolicies()

RemoveGroupingPolicies ลบกฎการสืบทอดบทบาทออกจากนโยบายปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกลบออกจากนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกลบออกจากนโยบายปัจจุบัน

ตัวอย่างเช่น:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy ลบกฎการสืบทอดบทบาทออกจากนโยบายปัจจุบัน สามารถระบุตัวกรองฟิลด์ได้

ตัวอย่างเช่น:

removed := e.RemoveFilteredGroupingPolicy(0, "alice")

RemoveNamedGroupingPolicy()

RemoveNamedGroupingPolicy ลบกฎการสืบทอดบทบาทออกจากนโยบายที่มีชื่อปัจจุบัน

ตัวอย่างเช่น:

removed := e.RemoveNamedGroupingPolicy("g", "alice")

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicies ลบกฎการสืบทอดบทบาทที่มีชื่อออกจากนโยบายปัจจุบัน การดำเนินการนี้เป็นแบบอะตอมิก ดังนั้น หากกฎการอนุญาตประกอบด้วยกฎที่ไม่สอดคล้องกับนโยบายปัจจุบัน ฟังก์ชันจะคืนค่าเป็น false และไม่มีกฎนโยบายใดถูกลบออกจากนโยบายปัจจุบัน หากกฎการอนุญาตทั้งหมดสอดคล้องกับกฎนโยบาย ฟังก์ชันจะคืนค่าเป็น true และกฎนโยบายแต่ละข้อจะถูกลบออกจากนโยบายปัจจุบัน

ตัวอย่างเช่น:

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveNamedGroupingPolicies("g", rules)

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy ลบกฎการสืบทอดบทบาทออกจากนโยบายที่มีชื่อปัจจุบัน สามารถระบุตัวกรองฟิลด์ได้

ตัวอย่าง:

removed := e.RemoveFilteredNamedGroupingPolicy("g", 0, "alice")

UpdatePolicy()

UpdatePolicy อัปเดตนโยบายเก่าเป็นนโยบายใหม่

ตัวอย่าง:

updated, err := e.UpdatePolicy([]string{"eve", "data3", "read"}, []string{"eve", "data3", "write"})

UpdatePolicies()

UpdatePolicies อัปเดตนโยบายเก่าทั้งหมดเป็นนโยบายใหม่

ตัวอย่าง:

updated, err := e.UpdatePolicies([][]string{{"eve", "data3", "read"}, {"jack", "data3", "read"}}, [][]string{{"eve", "data3", "write"}, {"jack", "data3", "write"}})

AddFunction()

AddFunction เพิ่มฟังก์ชันที่กำหนดเอง

ตัวอย่าง:

func CustomFunction(key1 string, key2 string) bool {
if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data/:resource" {
return true
} else if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data2/:id/using/:resId" {
return true
} else {
return false
}
}

func CustomFunctionWrapper(args ...interface{}) (interface{}, error) {
key1 := args[0].(string)
key2 := args[1].(string)

return bool(CustomFunction(key1, key2)), nil
}

e.AddFunction("keyMatchCustom", CustomFunctionWrapper)

LoadFilteredPolicy()

LoadFilteredPolicy โหลดนโยบายที่กรองจากไฟล์/ฐานข้อมูล

ตัวอย่าง:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy เพิ่มนโยบายที่กรองจากไฟล์/ฐานข้อมูล

ตัวอย่าง:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy อัปเดต oldRule เป็น newRule ในส่วน 'g'

ตัวอย่าง:

succeed, err : = e.UpdateGroupingPolicy([]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy อัปเดต oldRule ที่มีชื่อ ptype เป็น newRule ในส่วน 'g'

ตัวอย่าง:

succeed, err : = e.UpdateGroupingPolicy("g1",[]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

SetFieldIndex()

SetFieldIndex สนับสนุนการปรับแต่งชื่อและตำแหน่งทั่วไปของ sub, obj, domain และ priority

[policy_definition]
p = customized_priority, obj, act, eft, subject

ตัวอย่าง:

e.SetFieldIndex("p", constant.PriorityIndex, 0)
e.SetFieldIndex("p", constant.SubjectIndex, 4)