如何通过“ permissions_required”挂钩有效地限制非CMS页面浏览到用户组?

问题描述 投票:1回答:1

我在wagtail网站中有一个应用程序,该应用程序使用views.py中构造的多个页面(此处是因为它们包含复杂的表单和数据处理,并且不需要任何CMS功能)。这些视图之一,我想限制为特定组的用户。

对于其他页面,我使用@logon required mixin,效果很好。我可以编写一些使用def has_group(user, group_name): return user.groups.filter(name=group_name).exists()之类的代码,但是当wagtail具有不错的内置权限模型时,这似乎很混乱。因此,我尝试在wagtail_hook.py中使用以下钩子:

from django.contrib.auth.models import Permission
from wagtail.core import hooks

@hooks.register('register_permissions')
def view_committee_page():
    return Permission.objects.filter(codename="view_committee_page")

我认为应该不会在组对象权限下的wagtail admin中显示此内容。我的理解仅基于使用Wagtail v1.X发现的奇怪示例。该文档在此特定的挂钩上含糊不清:https://docs.wagtail.io/en/v2.5.1/reference/hooks.html#register-permissions

我对所看到的示例所做的唯一修改(例如,在这里:Wagtail set additional permissions for MyPage)是按照2.0版本说明将wagtail.wagtailcore更新为wagtail.core

我知道我的wagtail_hooks.py文件已正确拾取,因为我在其中的另一个钩子按预期工作。

我想念什么吗?是否有更新的方法来解决此问题?

wagtail
1个回答
0
投票

如何使用装饰器创建自己的函数:@hooks.register('before_serve_page')

在watail_hooks.py中,有一个名为check_view_restrictions()的函数,因此您可以执行类似的操作吗?

© www.soinside.com 2019 - 2024. All rights reserved.