Casbin:用户只能使用自己的用户名调用路径

Casbin: user may only call path with their own username

我正在尝试实施 Casbin 身份验证,以便用户只能获得自己的用户名,但将其应用于群组。示例:

/users/get/alice 可以被用户名为 alice

的用户调用

/users/get/john50 可以被用户名为 john50

的用户调用

alicejohn50无法调用对方的端点。

但是,我希望能够将其应用于组内的所有用户,因此理想情况下我希望我的策略如下所示:

p, staff-all, /users/get/:userid, GET, allow

这是我可以在策略和模型中实现的东西还是我需要在代码中实现的东西?这听起来像是一个比策略和模型中更复杂的用例。

我现在的型号:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act, eft

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow)) && !some(where (p.eft == deny))

[matchers]
m = g(r.sub, p.sub) && keyMatch2(r.obj, p.obj) && regexMatch(r.act, p.act)

我在 Casbin examples 中看到过类似的内容,但这些似乎提供了特定的用户名,而不是通过群组完成的

在此处查看 keyGet() 函数:https://casbin.org/docs/en/function

匹配器类似于:

m = (r.sub == keyGet(r.obj, p.obj)) && <other_part>