Cookie可能没有设置或溢出,因为它太大了

时间:2015-02-04 13:05:16

标签: ruby-on-rails angularjs

使用有关如何使用devise和angular作为前端实现rails身份验证的教程。

http://www.sotoseattle.com/blog/2014/10/30/Devise-Angular-Rails/

除了我尝试登录时遇到的cookie错误或我注册时,所有问题都很好,因为有效的注册用户会自动登录。

我得到的错误是:

Cookie 'logged_user' possibly not set or overflowed because it was too large (8279 > 4096 bytes)!

有角度的signIn函数:

$scope.signIn = function(new_user){
  data = { user: new_user };
  $http.post('/users/sign_in', data)
  .success(function(data){
    $scope.user = {};
    $cookieStore.put('logged_user', data);
    $scope.setForm('');
    $location.path('/dashboard');
  })
  .error(function(data,status){
    console.log(data);
    console.log(status);
  });
};

完全可以使用cookies吗?我认为问题来自这一行:

$cookieStore.put('logged_user', data);

但是在js或角度方面不是很有经验,我不知道如何去做。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

使用cookie来管理会话很好,但8k是一个非常大的cookie。正如您所见,尺寸限制为4k。

请记住,您的cookie将在浏览器的每个请求中发送到服务器。 (大型,恕我直言)4k限制的原因是您希望您的请求很轻。每次使用cookie存储向会话哈希添加任何内容时,都会将其添加到cookie中。你确定你需要放在那里的所有东西吗?

有关提及此限制并描述会话存储的文档,请查看http://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html