Django - 匿名用户组

arc*_*ies 4 django

我需要允许管理员管理我网站上模型的权限。组、用户和权限现在在这方面做得很好。但是,我还需要允许管理员管理未经身份验证的用户(匿名用户)的权限。文档说匿名用户的组始终为空,那么我如何允许管理他们的权限?

Tis*_*sho 5

给匿名用户添加权限很奇怪。文件说:

Django 的权限框架没有地方存储匿名用户的权限。但是,它有一个基础,允许自定义身份验证后端为匿名用户指定授权。这对于可重用应用程序的作者特别有用,他们可以将所有授权问题委托给身份验证后端,而不需要设置(例如,控制匿名访问)。

因此,您可以为匿名用户设置权限,但使用自定义身份验证后端。有时最好使用声明性权限检查,在具有所需权限的视图上使用装饰器,例如:

@permission_required('somemodel.can_add')
def add_model(request):
Run Code Online (Sandbox Code Playgroud)

或者对所有人(包括匿名用户)不加限制。或者一些自定义权限检查..

或者,如果您无论如何都想拥有权限,您可以随时创建一个虚拟用户,比如说“AnonUser”,以授予其权限,然后检查权限是否具有以下内容:

if not user.is_authenticated():
    dummy_user = User.objects.get(name="AnonUser")
    if dummy_user.has_perm("somepermission"):
        # bla bla bla
Run Code Online (Sandbox Code Playgroud)

但这是我永远不会使用的东西..