猿问

是否可以在 casbin 中按模式将 p.obj 与角色匹配?

这是我正在使用的 model.conf:


[request_definition]

r = sub, obj, act


[policy_definition]

p = sub, obj, act, eft


[role_definition]

g = _, _

g2 = _, _


[policy_effect]

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


[matchers]

m = g(r.sub, p.sub) && g2(r.obj, p.obj) && regexMatch(r.act, p.act)

这是相关政策(用户可以阅读自己的帖子,管理员可以阅读所有帖子。):


p, admin, /posts/:id/attachments, GET, allow

p, alice, /posts/1/attachments, GET, allow

g, bob, admin

g2, /files/1.jpg, /posts/1/attachments

这些请求的结果预计为true:


alice, /files/1.jpg, GET

bob, /files/1.jpg, GET

目前,我可以通过添加规则使策略生效g, /posts/1/attachments, /posts/:id/attachments,但我想知道是否可以通过模式匹配这些角色名称,这样我就不必为每个帖子创建规则。


(我找到的最接近的例子是AddNamedMatchingFunc("g","KeyMatch2",util.KeyMatch2)方法,我尝试在 on 上使用它g2,但它似乎只匹配模式 onr.obj和角色。)


心有法竹
浏览 149回答 1
1回答

aluckdog

不支持的第二个参数g是模式。但这里有一个解决方法,可以使用多个g来产生相同的效果:g, pattern1, role1 g, role1, pattern2是相同的:g, pattern1, pattern2
随时随地看视频慕课网APP

相关分类

Go
我要回答