angular中的$cookies和$cookieStore

Posted 大禹不治水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angular中的$cookies和$cookieStore相关的知识,希望对你有一定的参考价值。

  angular1.4及以上版本才支持$cookies。

  项目引入的是1.4.2版本,操作cookies原先一直用的是$cookieStore,用的飞起啊。

  $cookieStore.remove("user");
  //检测是否存在cookie   user
  $scope.pass = $cookieStore.get("pass");

  //记录登录时间
  $scope.loginTime = new Date().getTime();
  $cookieStore.put("loginTime", $scope.loginTime);
  var cookieDate = {};
  cookieDate.sid = data.con.sid;
  cookieDate.uid = data.con.uid;
  cookieDate.tid = data.con.tid;
  cookieDate.token = data.con.token;
  cookieDate.email = data.con.email;
  $cookieStore.put("user", cookieDate);
  if ($scope.isRemember) {
     var expireDate = new Date();
     expireDate.setDate(expireDate.getDate() + 30);//设置cookie保存30天
     $cookieStore.put("pass", {\'email\':$scope.email, \'password\':$scope.password}, {\'expires\': expireDate});
  } else {
      $cookieStore.remove("pass");
   }

  后来发现了一个严重的问题。在群里发现有人问问题,用的1.2版本的angular-cookie,$cookieStore设置保存时间没用。我一想,这怎么可能,嗤之以鼻。后来那人多次询问,我就把我的代码贴给他看了。也没什么,我就闭群看文章了。中途打野,想试试cookie怎么弄,毕竟自己也没弄多大明白,就换了个不常用的浏览器试了试。握草,cookie的设置根本没用啊!!于是查阅了些资料,好像cookieStore不支持保存的时间期限。

  

$cookies.putObject(key,value,[options]);
$cookieStore.put(key,value);

  这就是差别!于是瞬间全部换成$cookies写法。而且人老外也说了,以后会逐步摒弃$cookieStore,而更多使用$cookies。

 

 $cookies.remove("user");
 //检测是否存在cookie   user
 $scope.pass = $cookies.getObject("pass");

  //记录登录时间
  $scope.loginTime = new Date().getTime();
  $cookies.put("loginTime", $scope.loginTime);
  var cookieDate = {};
  cookieDate.sid = data.con.sid;
  cookieDate.uid = data.con.uid;
  cookieDate.tid = data.con.tid;
  cookieDate.token = data.con.token;
  cookieDate.email = data.con.email;
  $cookies.putObject("user", cookieDate);
  if ($scope.isRemember) {
     var expireDate = new Date();
     expireDate.setDate(expireDate.getDate() + 30);//设置cookie保存30天
     $cookies.putObject("pass", {\'email\': $scope.email, \'password\': $scope.password}, {\'expires\': expireDate});
   } else {
      $cookies.remove("pass");
   }

  在其他控制器获取cookie内容也很简单:

 $scope.ID = $cookies.getObject("user").email;
 $scope.sid = $cookies.getObject("user").sid;
 $scope.uid = $cookies.getObject("user").uid;
 $scope.token = $cookies.getObject("user").token;

  另外有的浏览器有自动填充账号密码功能(导致我以为我的cookie设置好了),可以在设置里面查看cookie是否保存成功。

以上是关于angular中的$cookies和$cookieStore的主要内容,如果未能解决你的问题,请参考以下文章

angular请求后台怎么去掉请求头携带的cookie

使用Angular.js中的cookie填充选择的相关下拉列表

带有 jwt cookie 的 Angular 应用程序中的身份验证点

httpOnly cookie 中的 JWT - AuthGuard 和受保护的路由(Node.js、Angular)

Angular 和 PHP JWT 和 CSRF (XSRF) Cookie

使用 Angular 4 保存 cookie