Casbin:用户只能使用自己的用户名调用路径
Casbin: user may only call path with their own username
我正在尝试实施 Casbin 身份验证,以便用户只能获得自己的用户名,但将其应用于群组。示例:
/users/get/alice
可以被用户名为 alice
的用户调用
/users/get/john50
可以被用户名为 john50
的用户调用
alice
和john50
无法调用对方的端点。
但是,我希望能够将其应用于组内的所有用户,因此理想情况下我希望我的策略如下所示:
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>
我正在尝试实施 Casbin 身份验证,以便用户只能获得自己的用户名,但将其应用于群组。示例:
/users/get/alice
可以被用户名为 alice
/users/get/john50
可以被用户名为 john50
alice
和john50
无法调用对方的端点。
但是,我希望能够将其应用于组内的所有用户,因此理想情况下我希望我的策略如下所示:
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>