我一直在寻找Django的Admin应用程序的代码,以确定他们如何在用户的所有视图上执行全面的身份验证检查,而不知道它是如何完成的(Django初学者在这里)。Django管理员身份验证如何工作?
例如,在Admin的sites.py
中有index
视图,如果用户未通过身份验证,则该视图根本不会被调用。我知道有一些预处理发生,导致login
被调用,但我无法识别调用login
的方法。
有没有人对Admin应用程序的请求流程有任何想法?
我一直在寻找Django的Admin应用程序的代码,以确定他们如何在用户的所有视图上执行全面的身份验证检查,而不知道它是如何完成的(Django初学者在这里)。Django管理员身份验证如何工作?
例如,在Admin的sites.py
中有index
视图,如果用户未通过身份验证,则该视图根本不会被调用。我知道有一些预处理发生,导致login
被调用,但我无法识别调用login
的方法。
有没有人对Admin应用程序的请求流程有任何想法?
以下是相关文件 - django/contrib/admin/sites.py。具体来说,查看线路170上的admin_view
修饰符(这是调用login
的位置)和wrap
修饰符,其中后者应用于线路217上的urlpatterns
的每个视图。(它类似于login_required
来自django.contrib.auth
作品的装饰者)。
基本上,每个视图被包裹在检查用户是否可以访问管理站点(管线147,request.user.is_active and request.user.is_staff
一个装饰 - 注意,如果用户没有登录,那么request.user
是AnonymousUser
一个实例,为此is_active
和is_staff
始终为False
),如果不是,则显示login
视图。
正确 - 所以当URL被检索到时,它们会自动用'admin_view'包装,它会在实际视图被调用之前自动执行检查。谢谢! – 2011-06-12 03:32:24