繁体   English   中英

Django:LogoutView不会注销-仍已登录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM