Django PermissionRequireMixin类如何在代码级别工作?(我甚至在调查mixins.py在auth文件夹中)

2024-09-29 22:00:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道PermissionRequireMixin在Django是如何工作的。(我找不到任何问题来解释PermissionRequireMixin是如何工作的。我正在调查代码'mixins.py'在路径'django.contrib.auth公司')

例如,如果编写如下代码,它将检查登录用户是否具有名为“test_permission”的权限。如果登录用户具有此权限,则会移动到在template_name属性中写入的模板。否则,它将移动到登录页面(或另一个页面,具体取决于您的设置)。所以PermissionRequiredMixin检查权限才能在类类型视图中继续。在

from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import ListView

class ViewTest(PermissionRequiredMixin, ListView):
    permission_required = ('pertest.test_permission',)
    model = Test
    template_name = 'pertest/pertest_check_list.html'

我想知道的是。。。在

我调查过django.contrib.auth公司.mixin.py理解PermissionRequiredMixin类如何工作的代码。我可以看到它是AccessMixin的子类,并了解它有什么样的方法。但我不明白如何检查登录权限。我想了解代码库中的流。我应该在哪里检查才能完全理解检查权限的过程?在

我甚至想知道这个。在

假设登录用户“a”具有名为“test_permission”的权限,而“a”用户所在的组具有名为“group_test_permission”的权限。在

^{pr2}$

在案例A中,用户A可以继续,因为它拥有“test_permission”。 在案例B中,用户a可以继续,因为它位于一个拥有“group\u test_permission”的组中。在

它是否检查登录用户是否具有auth_user_user_permission表中的权限,然后检查auth_user_group table和auth_group_权限?还是相反的方向?我很困惑,因为group、user、permission都在单独的表中,并且通过ForiegnKey(manytomy或ForiegnKey)相互连接。在

简而言之,我想知道PermissionRequiredMixin类如何检查权限的过程,以及我应该检查哪些部分(哪些代码)才能理解这个过程。在

提前谢谢你。如果我的问题不清楚,请告诉我。在


Tags: django代码用户testauth权限过程group
1条回答
网友
1楼 · 发布于 2024-09-29 22:00:51

最后,身份验证后端负责授予或拒绝访问。在

您可能已经注意到,end中的PermissionRequiredMixin使用已定义的权限对user对象调用has_perm。这个方法只是在auth中包装一个名为_user_has_perm的内部方法模型.py. 在

最后,您可能需要阅读django.contrib.auth提供的backends.py,以了解默认情况下如何授予访问权。在

据我所知,默认情况下,它只检查您是否通过您的用户或您的组获得了授权,并允许您进入。在

高温

相关问题 更多 >

    热门问题