Django Admin身份验证如何工作?

时间:2011-06-12 03:11:28

标签: python django

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

例如,在管理员sites.py中,如果未对用户进行身份验证,则会显示index视图。我知道有一些预处理会导致login被调用,但我无法确定调用login的方法。

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

1 个答案:

答案 0 :(得分:4)

以下是相关文件 - django/contrib/admin/sites.py。特别是,请查看第170行的admin_view装饰器(这是调用login的位置)和第211行的wrap装饰器,后者应用于每个视图第217行urlpatterns。(与login_required的{​​{1}}装饰者的工作原理类似)。

基本上,每个视图都包含在一个装饰器中,用于检查用户是否可以访问管理站点(第147行,django.contrib.auth - 请注意,如果用户未登录,则request.user.is_active and request.user.is_staffrequest.user的实例,AnonymousUseris_active始终为is_staff),如果没有,则显示False视图。

相关问题