AngularJS:将对象存储在 cookie 中,给出 [Object Object] 的结果

Posted

技术标签:

【中文标题】AngularJS:将对象存储在 cookie 中,给出 [Object Object] 的结果【英文标题】:AngularJS: Storing an object in a cookie giving result of [Object Object] 【发布时间】:2015-08-20 03:51:13 【问题描述】:

在将此用户对象发送到我的服务时,我试图在 cookie 中存储一组用户凭据 -

this.SetCookie = function (user) 
    $cookies.user = user;

但是,当我尝试检索此 cookie 时,我得到的不是一个对象,而是一个显示“[Object Object]”的字符串

我可以将所有用户凭据单独存储在他们自己的 cookie 中,因为我知道我可以做到这一点,但这似乎效率很低?有一个简单的解决方法吗?我为这个问题找到的最佳结果与 JQuery 有关,对我不起作用。

【问题讨论】:

用户是对象,那么你需要在做console.log时使用JSON.stringigy(user) 谢谢,这行得通(减去错字:p),当我取回 cookie 时,我只使用 JSON.parse 将其恢复为对象格式。 我应该添加答案吗? 当然,我会接受的:) 看一下,我已经添加了答案..' 【参考方案1】:

在 Angular 1.4 中,我发现通过像这样创建 cookie 来存储 JSON 对象:

      var obj = 
        currentUser: 
          username: "testUN",
          authdata: authdata
        
      ;
      $cookies.putObject('cookieName', obj);

允许您像这样取回 cookie:

var cookieWObject = $cookies.getObject('cookieName');

然后得到这样的值:

var username = cookieWObject.currentUser.username;
var authdata = cookieWObject.currentUser.authdata;

【讨论】:

【参考方案2】:

您正在直接打印对象,该对象将始终显示[Object Object],因为它包含JSON 的对象,在打印它时它使用警报方法它使用.toString() 方法在控制台中显示它。

您需要创建JSON.stringify(user),它将所有JSON 对象转换为字符串。使用该对象时,您需要使用 JSON.parse(user) 将对象转换为 JSON

【讨论】:

【参考方案3】:
JSON.stringify(user); //for storing in cookies

JSON.parse($cookies.user); //for converting into an object

【讨论】:

【参考方案4】:

对于在 Angular 中使用 cookie,必须在控制器中注入依赖项 'ngCookies' 或在 angular.module('app',[ngCookies]) 中声明,不推荐使用 $cookieStore。

var app = angular.module('myApp',['ngCookies']);
app.controller('cookiesController',['$scope','$cookies',function($scope,$cookies)
  //using put method you can add value using key value 
  $cookies.put('Kye','Admin');
  //access cookies value
  console.log($cookies.get('Key'));
  
  //You can add also object in Cookies
  var data = 
            'name':'admin',
            'pass':'admin'
            
  $cookies.putObject('data',data);
  //access object value
  console.log($cookies.getObject('data'));
  

]);

【讨论】:

以上是关于AngularJS:将对象存储在 cookie 中,给出 [Object Object] 的结果的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 中会话存储、本地存储和 Cookie 的区别

如何将 JS 对象存储在 cookie 中

AngularJS 的 cookie 过期了?

将 jwt 保存在 cookie 中以将其传递到本地存储是不是安全?

NodeJS:在客户端将 JWT 存储在哪里? sessionStorage、localStorage 还是 cookie?

AngularJS cookie与数组