如何解决Casbin:用户只能使用自己的用户名调用路径
我正在尝试实施 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,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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。