【问题标题】:How to limit access to grappelli filebrowser using django auth permissions?如何使用 django auth 权限限制对 grappelli 文件浏览器的访问?
【发布时间】:2012-04-17 09:23:36
【问题描述】:

我需要使用权限限制用户对文件浏览器的访问。例如,只有具有“can_upload_files”权限的用户才能在我的自定义仪表板中看到 Filebrowser。

这可能吗?

谢谢!

【问题讨论】:

  • 您使用的是什么自定义仪表板?您可以修改管理模板并有条件地在此处添加指向文件浏览器的链接。如果登录的用户没有访问权限,则不会显示链接。

标签: django django-permissions django-grappelli django-filebrowser


【解决方案1】:

这可以通过中间件来完成。比如:

from django.http import HttpResponseForbidden

class MediaLibraryAccess(object):
    def process_request(self, request):
        if not request.path.startswith('/admin/media-library'):
            return None
        if request.user and request.user.is_superuser:
            return None
        return HttpResponseForbidden('Access Forbidden')

不要忘记激活settings.py中的中间件

MIDDLEWARE_CLASSES = (
       ...
       "myapp.middleware.MediaLibraryAccess",
)

在此示例中,我正在检查 superuser,但您可以轻松检查特定权限...

【讨论】:

    【解决方案2】:

    如果您想要完成的只是从仪表板中隐藏“媒体管理”组,您可以在 dashboard.py 代码中使用以下条件:

    if context.get('user').has_perm('accounts.can_upload_files'):
        self.children.append(modules.LinkList(
            _('Media Management'),
            column=2,
            children=[
                {
                    'title': _('FileBrowser'),
                    'url': '/admin/filebrowser/browse/',
                    'external': False,
                },
            ]
        ))
    

    请注意,这实际上不会限制对 FileBrowser 的访问,只是隐藏链接。

    【讨论】:

    • 这也有利于在 django admin 中限制对其他模型、链接等的访问。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多