【问题标题】:Django logout(redirect to home page) .. Delete cookie?Django注销(重定向到主页)..删除cookie?
【发布时间】:2010-11-19 12:12:09
【问题描述】:

我在注销后将用户重定向到主页。在这两者之间,我想删除所有/或特定的客户端 cookie(我之前设置过)。

def logoutuser(request):
    logout(request)
    return redirect('app.home.views.home')

调用response.delete_cookie('user_location'),没有响应对象。我该怎么做?

【问题讨论】:

    标签: django cookies


    【解决方案1】:

    就像jobcry说的,logout()清理会话数据,但看起来你也设置了自己的cookie。

    您可以包装 auth logout 视图,这将返回 HttpResponse:

    def logout_user(request):
         response = logout(request, next_page=reverse('app.home.views.home'))
         response.delete_cookie('user_location')
         return response
    

    或者,如果您只是使用注销方法而不是视图,则可以使用您拥有的 redirect() 方法的返回值(我假设它也返回 HttpResponse)。

    def logout_user(request):
         logout(request)
         response = redirect('app.home.views.home')
         response.delete_cookie('user_location')
         return response
    

    【讨论】:

    • NB "由于 cookie 的工作方式,pathdomain 应该与您在 set_cookie() 中使用的值相同——否则 cookie不能删除。” docs.djangoproject.com/en/1.3/ref/request-response/…
    • 谢谢@MattBall。任何语言、框架、库等都必须如此。
    • 我在 django 1.10 的注销功能 from django.contrib.auth import logout 中似乎没有 next_page 作为参数
    【解决方案2】:

    根据http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.logout

    在 Django 1.0 中进行了更改:现在调用 logout() 会清除会话数据。

    【讨论】:

    • 似乎删除了会话数据,但没有删除客户端cookie。我正在使用 Django 1.1
    【解决方案3】:

    希望这会有所帮助: 调用“/clear-cookies”时删除cookie

    location.href = '/clear-cookies';
    
    1. 在views.py中定义一个方法:

      def clear_cookies(request):
          response = HttpResponseRedirect('/')
          response.delete_cookie('_gat', domain='example.com')
          response.delete_cookie('_ga', domain='example.com')
          response.delete_cookie('_gid', domain='example.com')
          return response
      
    2. 将路径和方法添加到您的 urls.py:

      url(r'^clear-cookies', clear_cookies),
      

    【讨论】:

      猜你喜欢
      • 2014-08-16
      • 2014-02-10
      • 1970-01-01
      • 2014-04-07
      • 2015-08-09
      • 2019-05-28
      • 2019-07-02
      • 2012-10-01
      • 1970-01-01
      相关资源
      最近更新 更多