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是否保存成功。

时间: 2024-10-29 05:09:23

angular中的$cookies和$cookieStore的相关文章

Angular中ngCookies模块介绍

1.Cookie介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的.硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的.所以,按存在时间,可分为非持久Cookie和持久Cookie. 主要因为HTTP协议无状态性,服务器需要知道用户在之前的页面做了哪些操作,所欲引入Cookie,是一种解

angular中cookies的用法

AngularJs中对cookies的操作进行了单独的封装,首先需要先引入angular-cookies.js文件: <script src="scripts/lib/angular-cookies/angular-cookies.js"></script> 原文地址:https://www.cnblogs.com/ncloud/p/9125981.html

(七)理解angular中的module和injector,即依赖注入

依赖注入(DI)的好处不再赘言,使用过spring框架的都知道.angularjs作为前台js框架,也提供了对DI的支持,这是javascript/jquery不具备的特性.angularjs中与DI相关有angular.module().angular.injector(). $injector.$provide.对于一个DI容器来说,必须具备3个要素:服务的注册.依赖关系的声明.对象的获取.比如spring中,服务的注册是通过xml配置文件的<bean>标签或是注解@Repository.

angular中的通信方式

在项目中,我们可能会很经常性的利用到控制器之间的相互通信,在angular中的控制器之间的相互通信有以下几种方式: 1)通过本地数据的存储localstorage,sessionstorage, 2)通过rootScope,顶级作用域 3)通过$broadcast,$on,$emit的方式进行通信 在此就讲解下如何通过第三种方式进行通信的问题: $broadcast:顾名思义是广播的意思,一般用于父级控制器向子控制器传递信息的方法. $emit:主要是用于子控制器向父控制器传递信息的方法. $o

angular中的路径问题

我们在写项目时会遇到启动页调到引导页,引导页再调到首页, 那我们在用angular框架写这种东西的时候如果我们不细心的话就会遇到问题, 比如说找不到引导页的图片等等. 那我们怎么解决这个问题呢? 首先我们要明确,我们使用的angular框架所以我们应该使用angular中的框架来解决这个问题, 而不是还是按照原来的思想按部就班的使用路径跳转. 下面我们就来看一下, 1.启动页跳到引导页 app.controller("zeroController",function ($timeout

Angular中的jsonp

1.一般我们使用Angualr中的jsonp值这样使用的:注入$http服务 这样使用jsonp的方式可以支持多数api,但是douban不支持无法使用 1 module.controller('InTheatersController',['$scope','$http', function($scope,$http){ 2 4 var doubanApiAddress = 'https://api.douban.com/v2/movie/in_theaters'; 5 6 /!*在angua

angular中自定义依赖注入的方法和decorator修饰

自定义依赖注入的方法 1.factory('name',function () { return function(){ } }); 2.provider('name',function(){ this.$get=function(){ return function(){ } }; }); 3.service('name',function(){ this.n=v; }); 4.constant('name','value'); 5value('name','value'); 依赖的继承  

angular中的动画效果

用angular来形成动画效果的代码如下 <!DOCTYPE html> <html lang="en" ng-app="app"> <head> <meta charset="UTF-8"> <title></title> <style> .box { width: 100px; height: 100px; background: red; } </st

利用IdentityServer3在ASP.NET 5和Angular中实现OAuth2 Implicit Flow

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:之前介绍过的IdentityServer3虽然是基于Katana开发的,不过同样可以托管在ASP.NET 5中运行.今天推荐的这篇文章就是介绍如何在ASP.NET 5和Angular中实现OAuth2的Implicit Flow验证的. IdentityServer之前介绍过,是一个功能完备的.NET开源OpenID Connect/OAuth 2.0框架.IdentityServer3是基于