Langkau ke kandungan utama

Management API

API primitif yang menyediakan sokongan penuh untuk pengurusan dasar Casbin.

Filtered API

Hampir semua API terkumpul mempunyai parameter yang sama (fieldIndex int, fieldValues ...string). fieldIndex ialah indeks di mana pemadanan bermula, fieldValues menunjukkan nilai yang sepatutnya ada dalam hasil. Perhatikan bahawa rentetan kosong dalam fieldValues boleh menjadi sebarang perkataan.

Contoh:

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]]

Rujukan

pembolehubah global e adalah contoh Enforcer.

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

Enforce()

Enforce menentukan sama ada "subjek" boleh mengakses "objek" dengan operasi "tindakan", parameter input biasanya: (sub, obj, act).

Contohnya:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher menggunakan pencocokan tersuai untuk menentukan sama ada "subjek" boleh mengakses "objek" dengan operasi "tindakan", parameter input biasanya: (matcher, sub, obj, act), gunakan pencocokan model secara lalai apabila matcher adalah "".

Contohnya:

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

EnforceEx()

EnforceEx menerangkan penguatkuasaan dengan memberitahu peraturan yang dipadankan.

Contohnya:

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

EnforceExWithMatcher()

EnforceExWithMatcher menggunakan pencocokan tersuai dan menerangkan penguatkuasaan dengan memberitahu peraturan yang dipadankan.

Contohnya:

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

BatchEnforce()

BatchEnforce memaksa setiap permintaan dan mengembalikan hasil dalam susunan bool

Contohnya:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects mendapat senarai subjek yang muncul dalam dasar semasa.

Contohnya:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects mendapat senarai subjek yang muncul dalam dasar bernama semasa.

Contohnya:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects mendapat senarai objek yang muncul dalam dasar semasa.

Contohnya:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects mendapat senarai objek yang muncul dalam dasar bernama semasa.

Contohnya:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions mendapat senarai tindakan yang muncul dalam dasar semasa.

Contohnya:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions mendapat senarai tindakan yang muncul dalam dasar bernama semasa.

Contohnya:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles mendapat senarai peranan yang muncul dalam dasar semasa.

Contohnya:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles mendapat senarai peranan yang muncul dalam dasar bernama semasa.

Contohnya:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy mendapat semua peraturan kebenaran dalam dasar.

Contohnya:

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy mendapat semua peraturan keizinan dalam dasar, penapis medan boleh ditentukan.

Contohnya:

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

GetNamedPolicy()

GetNamedPolicy mendapat semua peraturan keizinan dalam dasar bernama.

Contohnya:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy mendapat semua peraturan keizinan dalam dasar bernama, penapis medan boleh ditentukan.

Contohnya:

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

GetGroupingPolicy()

GetGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar.

Contohnya:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar, penapis medan boleh ditentukan.

Contohnya:

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

GetNamedGroupingPolicy()

GetNamedGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar.

Contohnya:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy mendapatkan semua peraturan warisan peranan dalam dasar.

Contohnya:

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

HasPolicy()

HasPolicy menentukan sama ada peraturan pengkalan kuasa wujud.

Contohnya:

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

HasNamedPolicy()

HasNamedPolicy menentukan sama ada peraturan pengkalan kuasa bernama wujud.

Contohnya:

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

AddPolicy()

AddPolicy menambah peraturan pengkalan kuasa ke dasar semasa. Jika peraturan sudah wujud, fungsi ini mengembalikan salah dan peraturan tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan benar dengan menambahkan peraturan baru.

Contohnya:

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

AddPolicies()

AddPolicies menambahkan peraturan kebenaran ke dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran mengandungi peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar ditambahkan ke dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar ditambahkan ke dasar semasa.

Contohnya:

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

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()

AddPoliciesEx menambah peraturan keizinan ke dasar semasa. Jika peraturan itu sudah wujud, peraturan itu tidak akan ditambah. Tetapi tidak seperti AddPolicies, peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan salah secara langsung.

Contohnya:

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

AddNamedPolicy()

AddNamedPolicy menambah peraturan keizinan ke dasar bernama semasa. Jika peraturan itu sudah wujud, fungsi ini mengembalikan salah dan peraturan itu tidak akan ditambah. Jika tidak, fungsi ini mengembalikan benar dengan menambah peraturan baru.

Contohnya:

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

AddNamedPolicies()

AddNamedPolicies menambah peraturan kebenaran kepada polisi bernama semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan polisi semasa, fungsi ini mengembalikan salah dan tiada peraturan polisi ditambah kepada polisi semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan polisi, fungsi ini mengembalikan benar dan setiap peraturan polisi ditambah kepada polisi semasa.

Contohnya:

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 menambah peraturan kebenaran kepada polisi bernama semasa. Jika peraturan sudah wujud, peraturan itu tidak akan ditambah. Tetapi tidak seperti AddNamedPolicies, peraturan lain yang tidak wujud ditambah bukannya mengembalikan salah secara langsung.

Contohnya:

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

SelfAddPoliciesEx()

SelfAddPoliciesEx menambah peraturan kebenaran kepada polisi bernama semasa dengan autoNotifyWatcher dilumpuhkan. Jika peraturan sudah wujud, peraturan tersebut tidak akan ditambah. Tetapi tidak seperti SelfAddPolicies, peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan salah secara langsung.

Contohnya:

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

RemovePolicy()

RemovePolicy mengeluarkan peraturan kebenaran dari polisi semasa.

Contohnya:

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

RemovePolicies()

RemovePolicies mengeluarkan peraturan kebenaran dari polisi semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar dikeluarkan daripada dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar dikeluarkan daripada dasar semasa.

Contohnya:

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

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

RemoveFilteredPolicy mengeluarkan peraturan kebenaran daripada dasar semasa, penapis medan boleh ditentukan. RemovePolicy mengeluarkan peraturan kebenaran daripada dasar semasa.

Contohnya:

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

RemoveNamedPolicy()

RemoveNamedPolicy mengeluarkan peraturan kebenaran daripada dasar bernama semasa.

Contohnya:

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

RemoveNamedPolicies()

RemoveNamedPolicies mengeluarkan peraturan kebenaran dari polisi bernama semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan polisi semasa, fungsi ini mengembalikan salah dan tiada peraturan polisi dikeluarkan dari polisi semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan polisi, fungsi ini mengembalikan benar dan setiap peraturan polisi dikeluarkan dari polisi semasa.

Contohnya:

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 mengeluarkan peraturan kebenaran dari polisi bernama semasa, penapis medan boleh ditentukan.

Contohnya:

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

HasGroupingPolicy()

HasGroupingPolicy menentukan sama ada peraturan warisan peranan wujud.

Contohnya:

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

HasNamedGroupingPolicy()

HasNamedGroupingPolicy menentukan sama ada peraturan warisan peranan bernama wujud.

Contohnya:

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

AddGroupingPolicy()

AddGroupingPolicy menambahkan peraturan warisan peranan kepada dasar semasa. Jika peraturan sudah wujud, fungsi ini mengembalikan salah dan peraturan tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan benar dengan menambahkan peraturan baru.

Contohnya:

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

AddGroupingPolicies()

AddGroupingPolicies menambahkan peraturan warisan peranan kepada dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar ditambahkan kepada dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar ditambahkan kepada dasar semasa.

Contohnya:

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

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx menambahkan peraturan warisan peranan kepada dasar semasa. Jika peraturan sudah wujud, peraturan tersebut tidak akan ditambahkan. Tetapi tidak seperti AddGroupingPolicies, peraturan-peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan false secara langsung.

Contohnya:

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

AddNamedGroupingPolicy()

AddNamedGroupingPolicy menambahkan peraturan warisan peranan bernama kepada dasar semasa. Jika peraturan tersebut sudah wujud, fungsi ini mengembalikan false dan peraturan tersebut tidak akan ditambahkan. Jika tidak, fungsi ini mengembalikan true dengan menambahkan peraturan baru.

Contohnya:

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

AddNamedGroupingPolicies()

AddNamedGroupingPolicies menambahkan peraturan warisan peranan bernama kepada dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar ditambahkan kepada dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar ditambahkan kepada dasar semasa.

Contohnya:

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

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

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx menambah peraturan warisan peranan bernama kepada dasar semasa. Jika peraturan sudah wujud, peraturan itu tidak akan ditambah. Tetapi tidak seperti AddNamedGroupingPolicies, peraturan lain yang tidak wujud ditambahkan bukannya mengembalikan salah secara langsung

Contohnya:

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

RemoveGroupingPolicy()

RemoveGroupingPolicy mengalih keluar peraturan warisan peranan dari dasar semasa.

Contohnya:

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

RemoveGroupingPolicies()

RemoveGroupingPolicies mengeluarkan peraturan warisan peranan dari dasar semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran mengandungi peraturan yang tidak konsisten dengan dasar semasa, fungsi ini mengembalikan salah dan tiada peraturan dasar dikeluarkan dari dasar semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan dasar, fungsi ini mengembalikan benar dan setiap peraturan dasar dikeluarkan dari dasar semasa.

Contohnya:

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

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy mengeluarkan peraturan warisan peranan dari dasar semasa, penapis medan boleh ditentukan.

Contohnya:

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

RemoveNamedGroupingPolicy()

RemoveNamedGroupingPolicy membuang peraturan warisan peranan dari polisi bernama semasa.

Contohnya:

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

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicies membuang peraturan warisan peranan bernama dari polisi semasa. Operasi ini bersifat atomik. Oleh itu, jika peraturan kebenaran terdiri daripada peraturan yang tidak konsisten dengan polisi semasa, fungsi ini mengembalikan salah dan tiada peraturan polisi dikeluarkan dari polisi semasa. Jika semua peraturan kebenaran adalah konsisten dengan peraturan polisi, fungsi ini mengembalikan benar dan setiap peraturan polisi dikeluarkan dari polisi semasa.

Contohnya:

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

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

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy mengalih keluar peraturan warisan peranan dari polisi bernama semasa, penapis medan boleh ditentukan.

Contohnya:

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

UpdatePolicy()

UpdatePolicy mengemas kini polisi lama kepada polisi baru.

Contohnya:

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

UpdatePolicies()

UpdatePolicies mengemas kini semua polisi lama kepada polisi baru.

Contohnya:

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

AddFunction()

AddFunction menambah fungsi yang disesuaikan.

Contohnya:

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 memuatkan polisi yang disaring dari fail/pangkalan data.

Contohnya:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy menambahkan polisi yang disaring dari fail/pangkalan data.

Contohnya:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy mengemas kini oldRule ke newRule dalam bahagian g

Contohnya:

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

UpdateNamedGroupingPolicy()

KemasKiniKumpulanDenganNama mengemas kini peraturan lama bernama ptype kepada peraturan baru dalam bahagian g

Contohnya:

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

SetFieldIndex()

TetapIndeksMedan menyokong penyesuaian nama dan kedudukan konvensional bagi sub, obj, domain, dan priority.

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

Contohnya:

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