【问题标题】:How does Django Admin Authentication work?Django 管理员身份验证如何工作?
【发布时间】:2011-06-12 03:11:27
【问题描述】:

我一直在查看 Django 管理应用程序的代码,以确定他们如何对用户的所有视图执行全面身份验证检查,而不知道它是如何完成的(这里是 Django 初学者)。

例如,在管理员的sites.py 中有一个index 视图,如果用户未通过身份验证,则根本不会调用该视图。我知道发生了一些预处理,导致 login 被调用,但我无法识别调用 login 的方法。

有人对管理应用程序的请求如何流动有任何想法吗?

【问题讨论】:

    标签: python django


    【解决方案1】:

    这是相关文件——django/contrib/admin/sites.py。尤其是第 170 行的 admin_view 装饰器(这是调用 login 的地方)和第 211 行的 wrap 装饰器,后者应用于第 217 行的 urlpatterns 的每个视图.(类似于django.contrib.auth 中的login_required 装饰器的工作方式)。

    基本上,每个视图都包装在一个装饰器中,该装饰器检查用户是否可以访问管理站点(第 147 行,request.user.is_active and request.user.is_staff - 请注意,如果用户未登录,则 request.user 是 @ 的一个实例987654330@,其中is_active 和is_staff 始终为False),如果不是,则显示login 视图。

    【讨论】:

    • Right - 因此,当检索 URL 时,它们会自动用 admin_view 包装,这会在调用实际视图之前自动执行检查。谢谢!
    猜你喜欢
    • 2018-09-22
    • 2011-01-11
    • 2019-07-16
    • 1970-01-01
    • 2011-09-18
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多