[英]Django: LogoutView doesn’t log out - still logged in
我有url.py
与:
url(r'^logout/', views.LogoutView.as_view(), name='logout'),
和views.py
from django.contrib.auth import logout
class LogoutView(RedirectView):
permanent = False
url = reverse_lazy('login')
def get(self, request, *args, **kwargs):
logout(request)
return super(LogoutView, self).get(request, *args, **kwargs)
我在模板中使用链接<a href="{% url 'logout' %} ">Logout</a>
。
但是,如果我尝试注销自己,则无法正常工作,并且也不会收到错误消息。
我也尝试过:
def logout_view(request):
logout(request)
return HttpResponseRedirect('/login/')
但是我仍然可以访问所有页面。 我使用基于类的视图,并使用@method_decorator(login_required)
。
我使用django模块django-ldap-auth
进行登录。
您需要将permanent
更改为permanent = False
。 如果您使用的是Django 1.9+,则可以完全删除该行,因为它的默认值为False
。
否则,浏览器将记住重定向到login
视图而无需向注销URL发出请求的情况,因此您将保持登录状态。
您的基于函数的视图目前正在将重定向返回到相对的URL“登录”(例如/logout/
到/logout/login
。您可以对URL进行硬编码,反向URL或使用反向URL的redirect
快捷方式为了你:
return HttpResponseRedirect('/login/')
return HttpResponseRedirect(reverse('login'))
return redirect('login')
您输入了错误的logout
。 那是一个视图-您导入的视图中要调用的东西from django.contrib.auth import logout
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.