热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AngularJs如何操作Cookies?!

今天来聊一聊Cookie.Cookie可以说是一种客户端技术,程序把用户的一些信息以cookie的形式写给用户各自的浏览器。说白了就是网站为了辨别用户身份而储存在用户

今天来聊一聊COOKIE.  COOKIE可以说是一种客户端技术,程序把用户的一些信息以COOKIE的形式写给用户各自的浏览器。说白了就是网站为了辨别用户身份而储存在用户电脑上的数据。 很多购物网站的购物车功能、论坛自动登录功能都是靠COOKIE实现。

对COOKIEs进行操作包括保存,获取和删除。

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


  1. $COOKIEStore服务

  2. $COOKIEs服务

先说说$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:比如用户登录,记住密码的COOKIE有效期是7天。

  var COOKIEInfo= {};

  COOKIEInfo.username = $scope.username;

  COOKIEInfo.password = $scope.password;

  var expireDate = new Date();

  expireDate.setDate(expireDate.getDate() + 7);//设置COOKIE保存7天

  $COOKIEs.putObject("user", COOKIEDate, {'expires': expireDate});

获取也很方便:

$scope.ID = $COOKIEs.getObject("user").username;

$scope.sid = $COOKIEs.getObject("user").password;

简单的只有一个key-value的话用put()比较简单,但是是过期时间是session,关闭浏览器就没有了。

$COOKIEs.put('myFavorite', 'oatmeal');

再说说$COOKIEStore ,$COOKIEStore服务是基于后端的Session COOKIEs,所以写入的时候不能使用options属性,而且它的过期时间就是session。关闭浏览器了,COOKIE就失效了。$COOKIEStore不可以通过设置default里面的expires来设置过期时间,$COOKIEStore操作COOKIE都是基于Session过期的。

所以上面的例子你如果使用$COOKIEStore来实现记住用户名和密码的话,关闭浏览器COOKIEs就失效了,无法达到记住n天的这个功能。

$COOKIEStore.put("user", {

                username:aaa,

                password:123

               expires: new Date(new Date().getDate() + 5000)

            });

这样过期时间是无效的!!!!

总结:

ngCOOKIEs模块提供的$COOKIEs服务,为开发者操作读取和写入COOKIE提供了极大的便利性,而且还支持写入和读取对象,比较方便好用。当时在开发过程中,我们还是不能过多向COOKIE中写入数据,一是因为COOKIE的大小有限制,另外一方面敏感的数据写入COOKIE,安全方面有风险。密码都是需要和后台约定一种加密方式,不能直接明文存储,这样极不安全。使用 COOKIEs 需谨慎,多注意路径(path)和域的坑就基本没什么问题了。

最后:Angular官网已经提示,$COOKIEStore已经过时,推荐使用$COOKIEs服务。


推荐阅读
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
author-avatar
Ax珊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有