1.Cookie介绍

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

主要因为HTTP协议无状态性,服务器需要知道用户在之前的页面做了哪些操作,所欲引入Cookie,是一种解决HTTP协议无状态的一种方式。

服务器可以设置或读取Cookies中包含的信息,用来维护用户和服务器会话中的状态。

2.Cookie应用场景

  • 电子商务购物网站,需要在用户点击支付之前,知道用户购买了哪些商品。 说明:目前也有不部门实现是,每次点击购买,都直接发请求到后台,后台存储要购买的数据,然后再点击支付之前,从后台获取用户要购买的尚品数据,不使用Cookie也可以完成。
  • 用户登录,记住密码。开发者可以在用户登录之后,将用户名和密码,以某种加密的方式存储到客户端,第二次登录时,直接获取Cookie,然后发送Cookie到后台服务器进行验证,达到用户勾选了“记住密码”,后续无需输入用户名和密码的功能。当然是在Cookie的有效期内。

基于jQuery的jQuery.cookie.js是很多开发者用于项目中操作Cookie的库。

Angular中为了用户方便和简洁的操作Cookie,提供了ngCookies模块。这个模块下面提供2种服务,分别是:

  1. $cookieStore服务
  2. $cookies服务

3.Angular中的$cookies服务

$cookies类似jQuery.cookie.js,提供了Angular操作Cookie的方法,普通情况下,JavaScript是不同向Cookie写入对象的,但是Angular提供向Cookie写入对象的方法。 $cookies提供一下方法:
get(key) 返回一个指定key的cookie值

getObject(key) 返回一个指定key的反序列化cookie值

getAll() 以key-value对象形式返回所有的cookie

put(key,value,[options]) 写入一个key-value的cookie

putObject(key,value,[options])序列化设置一个key-value的Cookie

remove(key,[options]) 移除对应key的cookie

demo如下:

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {// Retrieving a cookievar favoriteCookie = $cookies.get('myFavorite');// Setting a cookie$cookies.put('myFavorite', 'oatmeal');
}]);

比如设置cookie的写入目录,或者过期时间。我们可以用到的$cookiesProvider里面的default配置信息。

https://docs.angularjs.org/api/ngCookies/provider/$cookiesProvider#defaults 页面可以查看$cookieProvider里面可以配置的信息。比如用户登录,记住密码的cookie有效期是7天。代码如下:

var expireDate = new Date();
expireDate.setDate(expireDate.getDate() + 7);var user={
username:encryptionStr("admin"),
password:encryptionStr('123456')
}$cookies.putObject('user',user,{'expires':expireDate});

encryptionStr() 是自定义的加密字符串方法。

4.Angular中的$cookieStore服务

$cookieStore 服务是基于后端的Session Cookies,所以不能写入的时候不能使用options属性,而且它的过期时间就是session。关闭浏览器了,cookie就失效了。在开发过程中,遇到一位同事,要完成 用户登录记住用户名和密码功能,使用的是如下代码,代码是无效的,因为$cookieStore不可以通过设置default里面的expires设置过期时间,$cookieStore操作Cookie都是基于Session过期的。

var expireDate = new Date();
expireDate.setDate(expireDate.getDate() + 7);var user={
username:encryptionStr("admin"),
password:encryptionStr('123456')
}$cookieStore.putObject('user',user,{'expires':expireDate});

写这篇博客的时候,Angular官网已经提示,$cookieStore已经过时,推荐使用$cookies服务。

5.小结

ngCookies模块提供的$cookies服务,为开发者操作读取和写入Cookie提供了极大的便利性,而且还支持写入和读取JSON对象。当时在开发过程中,我们还是不能过多向Cookie中写入数据,一方面Cookie的大小有限制,另外一方面敏感的数据写入Cookie,带来安全性上的风险。比如前面说到的完成“记住密码”功能,我们存储的用户名和密码,需要和后台约定一种加密方式,不能直接明文存储。

参考网址
1.https://docs.angularjs.org/api/ngCookies
2.https://docs.angularjs.org/api/ngCookies
3.细说Cookie

转载于:https://www.cnblogs.com/liminjun88/p/5680783.html

Angular中ngCookies模块介绍相关推荐

  1. python url模块介绍_python 中 urlparse 模块介绍

    urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...

  2. 深度神经网络中Inception-ResNet模块介绍

    之前在https://blog.csdn.net/fengbingchun/article/details/113482036 介绍了Inception,在https://blog.csdn.net/ ...

  3. CloudCompare中CCCoreLib模块介绍

    论文阅读模块将分享点云处理,SLAM,三维视觉,高精地图相关的文章.公众号致力于理解三维视觉领域相关内容的干货分享,欢迎各位加入我,我们一起每天一篇文章阅读,开启分享之旅,有兴趣的可联系微信diany ...

  4. Python3中typing模块介绍

    typing.py的源码在:https://github.com/python/cpython/blob/main/Lib/typing.py.此模块为类型提示(Type Hints)提供运行时支持( ...

  5. DSP F2803x中CLA模块介绍

    DSP之CLA模块 文章目录 1 概述 2 CLA接口 2.1 CLA存储 2.2 LCA内存总线 2.3 共享外设及EALLOW保护 2.4 CLA任务和中断向量 3 CLA和CPU仲裁 3.1 C ...

  6. python中wx模块介绍_python wx模块如何安装

    python wx模块如何安装 发布时间:2020-09-21 13:43:23 来源:亿速云 阅读:79 作者:Leah python wx模块如何安装?很多新手对此不是很清楚,为了帮助大家解决这个 ...

  7. Python中tqdm模块介绍

    tqdm模块简单介绍 tqdm是一个可以显示Python进度条的模块,可通过pip在终端安装 pip install tqdm 可通过 import tqdm 导入,也可通过 from tqdm im ...

  8. Python3中pickle模块介绍

          Pyhton3中的pickle模块用于对Python对象结构的二进制进行序列化(或pickling)和反序列化(或unpickling)."pickling"是将Pyt ...

  9. python fileinput模块next_Python中fileinput模块介绍

    fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作.该模块的input()函数有点类似文件 readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次 ...

最新文章

  1. hadoop hive 安装
  2. linux的ulimit各种限制之深入分析
  3. 终于将SAP系统完全配置通过了
  4. JBU联合双边上采样
  5. php的mktime,PHP mktime()函数获得本地时间戳
  6. python 大众点评模拟登陆_python项目实战:模拟登陆163邮箱,简单到爆
  7. jQuery插件开发之windowScroll
  8. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装...
  9. 平方根python_python如何求平方根
  10. 科研工作者要会的技能----查找顶刊会议或期刊的方法
  11. xfs文件系统修复问题
  12. WIN7专业版纯净下载:
  13. 给你一个杯子,你如何测试
  14. js实现-商城分类导航效果
  15. 时间戳90K是什么意思?
  16. web版拳皇,使用html,css,js来制作一款拳皇游戏
  17. 局域网的基本概念与体系结构
  18. macOS 与 iOS 中的 Tagged Pointer
  19. office2021官方正版镜像
  20. vob转mp4,每天一个实用小技巧

热门文章

  1. 中职pHP课程标准,中等职业学校数课程标准.doc
  2. js两个等号和三个等号_js中两个等号(==)和三个等号(===)的区别
  3. android studio butterknife自动生成,Android Studio使用ButterKnife和Zelezny的方法
  4. CSDN线上直播操作测试方案
  5. IDEA插件-生成对象所有set方法--->GenerateAllSetter
  6. c语言逻辑运算类指令,组成原理第二章——计算机指令
  7. mongodb索引生成HTML页面,MongoDB高级索引
  8. mysql innodb 数据复制_五千万的数据 复制到另张表 是先复制数据再加索引还是先建好索引再复制数据 表引擎Innodb...
  9. html在线测试接口,apiManager: 小幺鸡在线接口管理系统,支持在线测试,支持json,txt,xml,html,js,流,和 WebSocket...
  10. c语言程序的实质,C语言_printf中的%p的实质