Zum Hauptinhalt springen

Management API

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

Filtered API

Fast alle gefilterten APIs haben die gleichen Parameter (fieldIndex int, fieldValues ...string). fieldIndex ist der Index, an dem die Übereinstimmung beginnt, fieldValues bezeichnet die Werte, die das Ergebnis haben sollte. Beachten Sie, dass ein leerer String in fieldValues jedes Wort sein könnte.

Beispiel:

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

Referenz

Die globale Variable e ist eine Enforcer-Instanz.

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

Enforce()

Enforce entscheidet, ob ein "Subjekt" auf ein "Objekt" mit der Operation "Aktion" zugreifen kann, die Eingabeparameter sind in der Regel: (sub, obj, act).

Zum Beispiel:

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher verwendet einen benutzerdefinierten Matcher, um zu entscheiden, ob ein "Subjekt" auf ein "Objekt" mit der Operation "Aktion" zugreifen kann, die Eingabeparameter sind in der Regel: (matcher, sub, obj, act), verwendet standardmäßig den Modell-Matcher, wenn der Matcher "" ist.

Zum Beispiel:

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

EnforceEx()

EnforceEx erklärt die Durchsetzung, indem es über übereinstimmende Regeln informiert.

Zum Beispiel:

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

EnforceExWithMatcher()

EnforceExWithMatcher verwendet einen benutzerdefinierten Matcher und erklärt die Durchsetzung, indem es über übereinstimmende Regeln informiert.

Zum Beispiel:

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

BatchEnforce()

BatchEnforce setzt jede Anforderung durch und gibt das Ergebnis in einem boolschen Array zurück

Zum Beispiel:

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects erhält die Liste der Subjekte, die in der aktuellen Richtlinie auftauchen.

Zum Beispiel:

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects erhält die Liste der Subjekte, die in der aktuellen benannten Richtlinie auftauchen.

Zum Beispiel:

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

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

Zum Beispiel:

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects erhält die Liste der Objekte, die in der aktuellen benannten Richtlinie auftauchen.

Zum Beispiel:

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

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

Zum Beispiel:

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions erhält die Liste der Aktionen, die in der aktuellen benannten Richtlinie auftauchen.

Zum Beispiel:

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles holt die Liste der Rollen, die in der aktuellen Richtlinie erscheinen.

Zum Beispiel:

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles holt die Liste der Rollen, die in der aktuellen benannten Richtlinie erscheinen.

Zum Beispiel:

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy holt 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 der benannten Richtlinie.

Zum Beispiel:

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

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

Zum Beispiel:

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

GetGroupingPolicy()

GetGroupingPolicy holt alle Rollenvererbungsregeln in der Richtlinie.

Zum Beispiel:

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy holt alle Rollenvererbungsregeln in der Richtlinie, Feldfilter können angegeben werden.

Zum Beispiel:

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

GetNamedGroupingPolicy()

GetNamedGroupingPolicy holt 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 eine Autorisierungsregel zur aktuellen Richtlinie hinzu. Wenn die Regel bereits existiert, gibt die Funktion false 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 zur aktuellen Richtlinie hinzu. Die Operation ist atomar. Daher, wenn Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und keine Richtlinienregel wird zur aktuellen Richtlinie hinzugefügt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel wird zur 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 fügt Autorisierungsregeln zur aktuellen Richtlinie hinzu. Wenn die Regel bereits existiert, wird die Regel nicht hinzugefügt. Aber im Gegensatz zu AddPolicies werden andere nicht existierende Regeln hinzugefügt, anstatt direkt false zurückzugeben

Zum Beispiel:

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

AddNamedPolicy()

AddNamedPolicy fügt eine Autorisierungsregel zur aktuellen benannten Richtlinie hinzu. Wenn die Regel bereits existiert, gibt die Funktion false 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 zur aktuellen benannten Richtlinie hinzu. Die Operation ist atomar. Daher, wenn Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und keine Richtlinienregel wird zur aktuellen Richtlinie hinzugefügt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel wird zur 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 fügt Autorisierungsregeln zur aktuellen benannten Richtlinie hinzu. Wenn die Regel bereits existiert, wird die Regel nicht hinzugefügt. Aber im Gegensatz zu AddNamedPolicies werden andere nicht existierende Regeln hinzugefügt, anstatt direkt false zurückzugeben

Zum Beispiel:

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

SelfAddPoliciesEx()

SelfAddPoliciesEx fügt Autorisierungsregeln zur aktuellen benannten Richtlinie hinzu, wobei autoNotifyWatcher deaktiviert ist. Wenn die Regel bereits existiert, wird die Regel nicht hinzugefügt. Aber im Gegensatz zu SelfAddPolicies werden andere nicht existierende Regeln hinzugefügt, anstatt direkt false zurückzugeben

Zum Beispiel:

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

RemovePolicy()

RemovePolicy entfernt eine Autorisierungsregel aus der aktuellen Richtlinie.

Zum Beispiel:

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

RemovePolicies()

RemovePolicies entfernt Autorisierungsregeln aus der aktuellen Richtlinie. Die Operation ist atomar. Daher, wenn Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und keine Richtlinienregel wird aus der aktuellen Richtlinie entfernt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel 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()

RemoveFilteredPolicy entfernt eine Autorisierungsregel aus der aktuellen Richtlinie, Feldfilter können angegeben werden. RemovePolicy entfernt eine Autorisierungsregel aus der aktuellen Richtlinie.

Zum Beispiel:

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

RemoveNamedPolicy()

RemoveNamedPolicy entfernt eine Autorisierungsregel aus der aktuellen benannten Richtlinie.

Zum Beispiel:

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

RemoveNamedPolicies()

RemoveNamedPolicies entfernt Autorisierungsregeln aus der aktuellen benannten Richtlinie. Die Operation ist atomar. Wenn die Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und keine Richtlinienregel wird aus der aktuellen Richtlinie entfernt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel 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 benannten Richtlinie, Feldfilter können angegeben werden.

Zum Beispiel:

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

HasGroupingPolicy()

HasGroupingPolicy bestimmt, ob eine Regel für die Rollenvererbung existiert.

Zum Beispiel:

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

HasNamedGroupingPolicy()

HasNamedGroupingPolicy bestimmt, ob eine benannte Regel für die Rollenvererbung existiert.

Zum Beispiel:

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

AddGroupingPolicy()

AddGroupingPolicy fügt eine Regel für die Rollenvererbung zur aktuellen Richtlinie hinzu. Wenn die Regel bereits existiert, gibt die Funktion false 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 Regeln für die Rollenvererbung zur aktuellen Richtlinie hinzu. Die Operation ist atomar. Wenn die Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und keine Richtlinienregel wird zur aktuellen Richtlinie hinzugefügt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel wird zur aktuellen Richtlinie hinzugefügt.

Zum Beispiel:

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

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx fügt Regeln für die Rollenvererbung zur aktuellen Richtlinie hinzu. Wenn die Regel bereits existiert, wird die Regel nicht hinzugefügt. Aber im Gegensatz zu AddGroupingPolicies werden andere nicht existierende Regeln hinzugefügt, anstatt direkt false zurückzugeben

Zum Beispiel:

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

AddNamedGroupingPolicy()

AddNamedGroupingPolicy fügt eine benannte Rollenvererbungsregel zur aktuellen Richtlinie hinzu. Wenn die Regel bereits existiert, gibt die Funktion false 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 benannte Rollenvererbungsregeln zur aktuellen Richtlinie hinzu. Die Operation ist atomar. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und es wird keine Richtlinienregel zur aktuellen Richtlinie hinzugefügt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel wird zur aktuellen Richtlinie hinzugefügt.

Zum Beispiel:

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

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

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx fügt benannte Rollenvererbungsregeln zur aktuellen Richtlinie hinzu. Wenn die Regel bereits existiert, wird die Regel nicht hinzugefügt. Aber im Gegensatz zu AddNamedGroupingPolicies werden andere nicht existierende Regeln hinzugefügt, anstatt direkt false zurückzugeben

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()

RemoveGroupingPolicies entfernt Rollenvererbungsregeln aus der aktuellen Richtlinie. Die Operation ist atomar. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und es wird keine Richtlinienregel aus der aktuellen Richtlinie entfernt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel 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 aktuellen benannten Richtlinie.

Zum Beispiel:

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

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicies entfernt benannte Rollenvererbungsregeln aus der aktuellen Richtlinie. Die Operation ist atomar. Wenn also Autorisierungsregeln aus Regeln bestehen, die nicht mit der aktuellen Richtlinie übereinstimmen, gibt die Funktion false zurück und es wird keine Richtlinienregel aus der aktuellen Richtlinie entfernt. Wenn alle Autorisierungsregeln mit den Richtlinienregeln übereinstimmen, gibt die Funktion true zurück und jede Richtlinienregel 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 aktuellen benannten Richtlinie, Feldfilter können angegeben werden.

Zum Beispiel:

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

UpdatePolicy()

UpdatePolicy aktualisiert eine alte Richtlinie zu einer neuen Richtlinie.

Zum Beispiel:

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

UpdatePolicies()

UpdatePolicies aktualisiert alle alten Richtlinien zu neuen 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 Datei/Datenbank.

Zum Beispiel:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

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

Zum Beispiel:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy aktualisiert oldRule zu newRulein im g Abschnitt

Zum Beispiel:

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

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy aktualisiert oldRule namens ptype zu newRulein im g Abschnitt

Zum Beispiel:

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

SetFieldIndex()

SetFieldIndex unterstützt die Anpassung von konventionellem Namen und Position von sub, obj, domain und priority.

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

Zum Beispiel:

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