Pyramid 中基于动态用户的授权

2024-05-05

我正在跟进Pyramid 文档中的安全指南 http://docs.pylonsproject.org/projects/pyramid/1.1/narr/security.html以及 wiki 教程添加授权 http://docs.pylonsproject.org/projects/pyramid/1.0/tutorials/wiki2/authorization.html

现在我需要添加基于单个用户而不是组的限制。

举例来说,如果任何博客编辑都有权查看所有评论,只有帖子作者可以编辑帖子本身.

对于第一个任务,我的根 ACL 将如下所示:

__acl__ = [ (Allow, Everyone, 'view'),
            (Allow, Authenticated, 'view_profile'),
            (Allow, 'groups:editor', 'edit_comment')
]

但对于edit_post?

我读了这个答案 https://stackoverflow.com/questions/5761617/pyramid-authorization-for-stored-items但对于我的需求来说似乎有点过分了,因为我不需要构建资源树。


通过创建以下内容,您已经拥有了一个“资源树”Root您项目中的资源。您只需要在其上添加一个节点即可posts这将返回一个Post具有特定的对象__acl__仅包含授权用户 ID。然后你就可以拥有你的edit_posts路线使用traverse='/posts/{post_id}'遍历你的资源树到Post对象与__acl__ on it.

这并不困难,并且是让 Pyramid 为您做这些事情的方法。

如果您不想使用permission正如柯克建议的那样,您可以在视图本身内部进行授权。

另外,如果您不喜欢这种添加方法__acl__属性和授权遍历,你可以实现自己的AuthorizationPolicy使用给定的主体列表和权限执行您希望它执行的操作。

Pyramid 的身份验证系统的要点在于它的存在,这很棒。 Pyramid 绝不要求您使用它,对于不使用它的视图,处理它不会对性能产生影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyramid 中基于动态用户的授权 的相关文章

随机推荐