Zum Hauptinhalt springen

Management-API

Die primitive API, die volle Unterstützung für das Management der Casbin-Richtlinien bietet.

Gefilterte API

Fast alle gefilterten api haben die gleichen Parameter (fieldIndex int, fieldValues ...string). fieldIndex ist der Index, in dem der übereinstimmende Anfang, fieldValues bezeichnet das Ergebnis, das Werte haben sollen. Beachten Sie, dass ein leerer String in Feldwerten ein beliebiges Wort sein kann.

Beispiel:

p, alice, book, read
p, bob, book, read
p, bob, book, write
p, alice, pen, get
p, bob, pen ,get
e.GetFilteredPolicy(1, "Buch") // wird zurückgegeben: [[Alice Book read] [Bob Book read] [Bob Book write]]

e. etFilteredPolicy(1, "book", "read") // gibt zurück: [[alice book read] [bob book read]]

e. etFilteredPolicy(0, "alice", "", "read") // wird zurückgegeben: [[alice book read]]

e.GetFilteredPolicy(0, "alice") // wird zurückgeben: [[alice book read] [alice pen get]]

Referenz

globale Variable e ist Enforcer Instanz.

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

Enforce()

Enforce entscheidet, ob ein "Betreff" mit der Operation "action" auf ein "Objekt" zugreifen kann, die Eingabeparameter sind üblich: (sub, obj, act).

Zum Beispiel:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher verwendet einen benutzerdefinierten Matcher um zu entscheiden, ob ein "Betreff" mit der Operation "Aktion" auf ein "Objekt" zugreifen kann Eingabeparameter sind üblich: (Matcher, Sub, obj, act), verwenden Sie standardmäßig Modellmatcher wenn der Matcher "" ist.

Zum Beispiel:

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

EnforceEx()

EnforceEx erklärt die Durchsetzung durch entsprechende Regeln.

Zum Beispiel:

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

EnforceExWithMatcher()

EnforceExWithMatcher verwenden einen benutzerdefinierten Matcher und erläutern die Durchsetzung durch Informationen über die entsprechenden Regeln.

Zum Beispiel:

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

BatchEnforce()

BatchErzwinge jede Anfrage und gibt Ergebnis in einem Bool-Array zurück

Zum Beispiel:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects bekommt die Liste der Themen, die in der aktuellen Richtlinie erscheinen.

Zum Beispiel:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects erhält die Liste der Themen, die in der aktuell benannten Richtlinie erscheinen.

Zum Beispiel:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects erhält die Liste der Objekte, die in der aktuellen Richtlinie erscheinen.

Zum Beispiel:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects erhält die Liste der Objekte, die in den aktuell benannten Richtlinien erscheinen.

Zum Beispiel:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions erhält die Liste der Aktionen, die in der aktuellen Richtlinie erscheinen.

Zum Beispiel:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions erhält die Liste der Aktionen, die in den aktuell benannten Richtlinien erscheinen.

Zum Beispiel:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles erhält die Liste der Rollen, die in den aktuellen Richtlinien erscheinen.

Zum Beispiel:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles erhält die Liste der Rollen, die in den aktuell benannten Richtlinien erscheinen.

Zum Beispiel:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy erhält alle Autorisierungsregeln in der Richtlinie.

Zum Beispiel:

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy holt alle Autorisierungsregeln in der Richtlinie, Feldfilter können angegeben werden.

Zum Beispiel:

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

GetNamedPolicy()

GetNamedPolicy holt alle Autorisierungsregeln in den genannten Richtlinien.

Zum Beispiel:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy holt alle Autorisierungsregeln in den angegebenen Richtlinien, Feldfilter können angegeben werden.

Zum Beispiel:

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

GetGroupingPolicy()

GetGroupingPolicy erhält alle Rollenvererbung Regeln in der Richtlinie.

Zum Beispiel:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy erhält alle Rollenvererbungsregeln in der Richtlinie, Feldfilter können angegeben werden.

Zum Beispiel:

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

GetNamedGroupingPolicy()

GetNamedGroupingPolicy erhält alle Rollenvererbungsregeln in der Richtlinie.

Zum Beispiel:

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy holt alle Rollenvererbungsregeln in der Richtlinie.

Zum Beispiel:

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

HasPolicy()

HasPolicy bestimmt, ob eine Autorisierungsregel existiert.

Zum Beispiel:

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

HasNamedPolicy()

HasNamedPolicy bestimmt, ob eine benannte Autorisierungsregel existiert.

Zum Beispiel:

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

AddPolicy()

AddPolicy fügt der aktuellen Richtlinie eine Autorisierungsregel hinzu. Wenn die Regel bereits existiert, gibt die Funktion falsch zurück und die Regel wird nicht hinzugefügt. Andernfalls gibt die Funktion true zurück, indem die neue Regel hinzugefügt wird.

Zum Beispiel:

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

AddPolicies()

AddPolicies fügt Autorisierungsregeln zu den aktuellen Richtlinien hinzu. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel zur aktuellen Richtlinie hinzugefügt wird. Wenn alle Autorisierungsregeln mit den Regeln der Politik übereinstimmen, gibt die Funktion wahr zurück und jede Richtlinien-Regel wird der aktuellen Richtlinie hinzugefügt.

Zum Beispiel:

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

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()

AddPoliciesEx adds authorization rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddPolicies, other non-existent rules are added instead of returning false directly

Zum Beispiel:

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

AddNamedPolicy()

AddNamedPolicy fügt der aktuell benannten Richtlinie eine Autorisierungsregel hinzu. Wenn die Regel bereits existiert, gibt die Funktion falsch zurück und die Regel wird nicht hinzugefügt. Andernfalls gibt die Funktion true zurück, indem die neue Regel hinzugefügt wird.

Zum Beispiel:

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

AddNamedPolicies()

AddNamedPolicies fügt Autorisierungsregeln zu den aktuell benannten Richtlinien hinzu. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel zur aktuellen Richtlinie hinzugefügt wird. Wenn alle Autorisierungsregeln mit den Regeln der Politik übereinstimmen, gibt die Funktion wahr zurück und jede Richtlinien-Regel wird der aktuellen Richtlinie hinzugefügt.

Zum Beispiel:

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 adds authorization rules to the current named policy. If the rule already exists, the rule will not be added. But unlike AddNamedPolicies, other non-existent rules are added instead of returning false directly

Zum Beispiel:

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

SelfAddPoliciesEx()

SelfAddPoliciesEx adds authorization rules to the current named policy with autoNotifyWatcher disabled. If the rule already exists, the rule will not be added. But unlike SelfAddPolicies, other non-existent rules are added instead of returning false directly

Zum Beispiel:

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

RemovePolicy()

Entfernt eine Autorisierungsregel aus der aktuellen Richtlinie.

Zum Beispiel:

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

RemovePolicies()

Entfernen von Richtlinien entfernt Autorisierungsregeln aus der aktuellen Richtlinie. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel aus der aktuellen Richtlinie entfernt wird. Wenn alle Autorisierungsregeln mit den Regeln übereinstimmen, gibt die Funktion wahr zurück und jede Regel wird aus der aktuellen Richtlinie entfernt.

Zum Beispiel:

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

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

Entfernen FilteredPolicy entfernt eine Autorisierungsregel aus der aktuellen Richtlinie. Feldfilter können angegeben werden. Entfernt eine Autorisierungsregel aus der aktuellen Richtlinie.

Zum Beispiel:

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

RemoveNamedPolicy()

Entfernt eine Autorisierungsregel aus der aktuell benannten Richtlinie.

Zum Beispiel:

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

RemoveNamedPolicies()

Entfernt die Autorisierungsregeln aus der aktuell benannten Richtlinie. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel aus der aktuellen Richtlinie entfernt wird. Wenn alle Autorisierungsregeln mit den Regeln übereinstimmen, gibt die Funktion wahr zurück und jede Regel wird aus der aktuellen Richtlinie entfernt.

Zum Beispiel:

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 entfernt eine Autorisierungsregel aus der aktuellen Richtlinie. Feldfilter können angegeben werden.

Zum Beispiel:

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

HasGroupingPolicy()

HasGroupingPolicy bestimmt, ob eine Rollenvererbungsregel existiert.

Zum Beispiel:

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

HasNamedGroupingPolicy()

HasNamedGroupingPolicy legt fest, ob eine benannte Rollenvererbungsregel existiert.

Zum Beispiel:

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

AddGroupingPolicy()

AddGroupingPolicy fügt der aktuellen Richtlinie eine Rollenvererbungsregel hinzu. Wenn die Regel bereits existiert, gibt die Funktion falsch zurück und die Regel wird nicht hinzugefügt. Andernfalls gibt die Funktion true zurück, indem die neue Regel hinzugefügt wird.

Zum Beispiel:

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

AddGroupingPolicies()

AddGroupingPolicies fügt Rollenvererbungsregeln zu den aktuellen Richtlinien hinzu. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel zur aktuellen Richtlinie hinzugefügt wird. Wenn alle Autorisierungen mit den Regeln übereinstimmen, gibt die Funktion wahr zurück und jede Richtlinien-Regel wird der aktuellen Richtlinie hinzugefügt.

Zum Beispiel:

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

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx adds role inheritance rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddGroupingPolicies, other non-existent rules are added instead of returning false directly

Zum Beispiel:

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

AddNamedGroupingPolicy()

AddNamedGroupingPolicy fügt der aktuellen Richtlinie eine benannte Rollenvererbungsregel hinzu. Wenn die Regel bereits existiert, gibt die Funktion falsch zurück und die Regel wird nicht hinzugefügt. Andernfalls gibt die Funktion true zurück, indem die neue Regel hinzugefügt wird.

Zum Beispiel:

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

AddNamedGroupingPolicies()

AddNamedGroupingPolicies fügt den aktuellen Richtlinien benannte Vererbungsregeln hinzu. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel zur aktuellen Richtlinie hinzugefügt wird. Wenn alle Autorisierungsregeln mit den Regeln der Politik übereinstimmen, gibt die Funktion wahr zurück und jede Richtlinien-Regel wird der aktuellen Richtlinie hinzugefügt.

Zum Beispiel:

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

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

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx adds named role inheritance rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddNamedGroupingPolicies, other non-existent rules are added instead of returning false directly

Zum Beispiel:

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

RemoveGroupingPolicy()

RemoveGroupingPolicy entfernt eine Rollenvererbungsregel aus der aktuellen Richtlinie.

Zum Beispiel:

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

RemoveGroupingPolicies()

Entfernen von GroupingPolicies entfernt Rollenvererbungsregeln aus der aktuellen Richtlinie. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel aus der aktuellen Richtlinie entfernt wird. Wenn alle Autorisierungsregeln mit den Regeln übereinstimmen, gibt die Funktion wahr zurück und jede Regel wird aus der aktuellen Richtlinie entfernt.

Zum Beispiel:

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

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy entfernt eine Rollenvererbungsregel aus der aktuellen Richtlinie. Feldfilter können angegeben werden.

Zum Beispiel:

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

RemoveNamedGroupingPolicy()

RemoveNamedGroupingPolicy entfernt eine Rollenvererbungsregel aus der aktuell benannten Richtlinie.

Zum Beispiel:

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

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicies entfernt benannte Rollenvererbungsregeln aus der aktuellen Richtlinie. Die Operation ist atomarer Natur. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Politik übereinstimmen die Funktion falsch zurückgibt und keine Richtlinien-Regel aus der aktuellen Richtlinie entfernt wird. Wenn alle Autorisierungsregeln mit den Regeln übereinstimmen, gibt die Funktion wahr zurück und jede Regel wird aus der aktuellen Richtlinie entfernt.

Zum Beispiel:

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

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

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy entfernt eine Rollenvererbungsregel aus der aktuell benannten Richtlinie. Feldfilter können angegeben werden.

Zum Beispiel:

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

UpdatePolicy()

UpdatePolicy aktualisiert eine alte Richtlinie auf neue Richtlinien.

Zum Beispiel:

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

UpdatePolicies()

UpdatePolicies aktualisiert alle alten Richtlinien auf neue Richtlinien.

Zum Beispiel:

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

AddFunction()

AddFunction fügt eine benutzerdefinierte Funktion hinzu.

For example:

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 lädt gefilterte Richtlinien aus der Datei/Datenbank.

For example:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy fügt eine gefilterte Richtlinie aus der Datei/Datenbank hinzu.

For example:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy aktualisiert alte Regeln auf newRulein g Abschnitt

For example:

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

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy aktualisiert alte Regeln mit dem Namen ptype auf newRulein g Abschnitt

For example:

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

SetFieldIndex()

SetFieldIndex suport customization of conventional name and position of sub, obj, domain and priority.

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

For example:

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