我应该在django注销视图中与中间件一起使用@csrf\u protect吗

我应该在django注销视图中与中间件一起使用@csrf\u protect吗,django,csrf,Django,Csrf,我有一个自定义的注销视图。我添加了如下的装饰器 from django.views.decorators.cache import never_cache from django.views.decorators.csrf import csrf_protect from django.views.decorators.http import require_POST from django.contrib.auth.views import logout_then_login @csrf_p

我有一个自定义的注销视图。我添加了如下的装饰器

from django.views.decorators.cache import never_cache
from django.views.decorators.csrf import csrf_protect
from django.views.decorators.http import require_POST
from django.contrib.auth.views import logout_then_login

@csrf_protect
@require_POST
@never_cache
def logout(request):
    nxt=request.POST.get('next')
    print 'next=',nxt
    return logout_then_login(request, nxt)
在我的设置文件中,我有以下中间件类

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
)
既然这里包含了CsrfViewMiddleware,我的视图真的需要@csrf_保护吗?如果我同时使用这两种保护,会不会出现一些问题/冲突

另一方面,当我检查时,我发现decorator只应用于login视图,而不应用于任何logout、login\u然后\u logout视图。这是为什么


任何最受欢迎的帮助

中间件为所有视图提供全面保护-添加装饰器是多余的。Django文档建议使用中间件而不是decorator,因为它提供了更好的保护

不建议单独使用decorator,因为如果您忘记了 要使用它,您将有一个安全漏洞。“腰带和背带” 使用这两种方法的策略很好,并且会产生最小的开销

decorators不用于您提到的视图,因为如果触发了login\u then\u logout事件,则会话通过CSRF被劫持的风险很小甚至没有,并且一旦会话被破坏,用户就没有安全风险


你似乎对CSRF有很多问题-我可以建议你专注于CSRF吗?

谢谢@Todd,作为django&web dev的新手,我正在努力理解这些技术。我正在浏览django的源代码,经常会发现confused@damon,我不会将源代码用作框架的指南。Django的文档是我使用过的最好的文档之一(如果不是最好的话)。我肯定会在网站上阅读Django教程,并用Django官方文档的其余部分对其进行补充。