【发布时间】:2014-10-26 00:08:55
【问题描述】:
我有一个使用自定义身份验证后端 (CoSign) 运行 Django 1.6 的站点。身份验证有效,但要注销,我需要删除 cookie。
这是注销前的 cookie,使用 Firebug:
- 名称:cookie_name
- 域:cookie_domain
- 路径:/
- 过期:会话
- 安全性:安全
这是我的注销视图:
from django.contrib.auth.views import logout as django_logout
def logout(request):
if request.user.is_authenticated():
response = django_logout(request,
next_page=reverse("logout-confirmation"))
response.delete_cookie('cookie_name',
domain="cookie_domain")
return response
else:
messages.add_message(request,
messages.ERROR,
"You can't log out if you aren't logged "
"in first!")
return HttpResponseRedirect(reverse("frontpage"))
我的代码中的 cookie_name 和 cookie_domain 与 cookie 的实际名称和域匹配。
这里是注销视图的响应头:
Connection: "close"
Content-Length: "0"
Set-Cookie: "{{ cookie_name }}=; Domain={{ cookie_domain }}; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/sessionid=25lysb3tzhozv464mrgg08uqz100ur39; expires=Mon, 15-Sep-2014 19:07:22 GMT; httponly; Max-Age=1209600; Path=/"
Vary: "Cookie"
但是,在进入我的注销视图后,cookie 仍然存在!谁能解释一下为什么会发生这种情况?
【问题讨论】: