【问题标题】:Django cookie age not settingDjango cookie 年龄未设置
【发布时间】:2014-06-10 00:37:40
【问题描述】:

我正在尝试为我的用户创建一种方式,让他们在登录时拥有“记住我”选项。但就目前而言,无论我尝试什么,当我在浏览器中查看 cookie 时,它​​只会显示 @ 987654321@。因此,一旦我关闭浏览器并返回我的页面,我就会退出。

在我的settings.py中我已经设置了

SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_COOKIE_AGE = 10000000

我认为这是我需要做的......

在前端(在 AngularJS 中)我有以下 cookie 存储:

$http.post('http://localhost:8000/auth/login/', {email: this.login['arguments'][0]['email'], password: this.login['arguments'][0]['password']})
        .success(function(response){
          if (response.token){
            $cookieStore.put('djangotoken', response.token);
            $http.defaults.headers.common['Authorization'] = 'Token ' + response.token;
          }
        })
        .error(function(data, status, headers, config){
          $cookieStore.remove('djangotoken');
        });

如果有人能告诉我如何让我的 cookie 只停留在我设定的指定年龄,将不胜感激!

【问题讨论】:

    标签: django angularjs cookies


    【解决方案1】:

    您直接从 Angular 设置 cookie,因此它与 Django 会话 cookie 年龄无关。设置cookie时需要经过过期时间。

    不幸的是,内置的 Angular cookieStore api 是不必要的限制,不支持这一点。看起来不错的选择是angular-cookie

    【讨论】:

    • 我的项目仍处于早期阶段,所以我并没有被锁定在我正在做的事情上——你会建议我以某种方式从 Django 设置 cookie 吗?
    • 好吧,我不太确定您要做什么。 Django 已经在会话中存储了登录状态。如果你只是想确定用户是否登录,你应该从 Django 传递它——也许在你渲染基本模板时的上下文中。
    猜你喜欢
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多