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)

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)

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)

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)

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.

Zum Beispiel:

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.

Zum Beispiel:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()​

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

Zum Beispiel:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()​

UpdateGroupingPolicy aktualisiert alte Regeln auf newRulein g Abschnitt

Zum Beispiel:

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

Zum Beispiel:

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)