cookie-parser 插件:cookie解析,加密的操作

  cookie-session 插件:session 的解析操作

  http 是无状态的

  cookie:在浏览器保存一些数据,每次向服务器发送请求的时候,都会带过来

    使用 cookie 的缺点:不安全,大小限制 4kb

  session:保存数据用的,保存在服务器

    使用 session 的优点:安全,没有大小限制

  session 的工作原理

  

  session 基于 cookie 实现的,不能独立实现,cookie 中会有一个 session 的 id ,而这个服务器,利用 session 的 id,找到 session 的 id,读取写入等等

  隐患:session 劫持,随时更改 session ,加密 cookie

  cookie:

    let express = require("express");

    let cookieParser = require("cookie-parser");

    let server = express();

    server.listen(3000);  // 先创建一个服务器

    server.use(cookieParser('jsdkfjsidfj'));  // 需要靠此来解析 cookie   里面的参数:可选,用来加密 cookie ,为了安全,参数是随便写,想写什么写什么

    server.use("/",function(req,res){

      console.log(req.cookies);    // 从浏览器中得到的 cookie

      console.log(req.signedCookies)  // 未签名版的密钥,也就是说没有经过加密

      res.cookie('user','blue',{    // 从服务器响应到浏览器中的 cookie

        path:"/",        // cookie 的路径

        maxAge:24*3600*1000,  // cookie 的持续时间 24 小时

         signed:true      // 签名   签名的作用,不能修改,也就是说用户只能看,但是不能改 cookie 里的东西  

      })

      res.clearCookie('user')  // 删除 cookie   里面的参数:user ,这是我的 cookie ,大家可以根据自己的情况来定   

    })

  session:

    是基于 cookie 实现的,cookie 的升级版,与 cookie 相比,更安全,且没有大小限制

    let express = require("express");

    let cookieParser = require("cookie-parser");

    let cookieSession = require("cookie-session");

    let server = express();

    server.listen(3000);  // 创建的服务器

    // 为了使 session 更安全

    let arr = [];

    for(let i=0;i<100000;i++){

      arr.push('sig'+Math.random())  // 此时的 arr 是有多么恐怖,因为 密钥使循环使用的,当别人破了你一个密钥后,

    }  

    server.use(cookieParser());  // 解析 cookie

    server.use(cookieSession({  // 是的,想使用这个插件,必须使用 cookieParser 来先将 cookie 解析了

      name:"sess",  // 设置了 session

      keys:arr,    // 密钥,必填,循环使用 cookie 的密钥,一定程度上保证了安全

      maxAge:2*3600*1000  // 2 小时,session 的存储时间 2 小时

    }))

    server.use("/",function(req,res){

      console.log(req.session)  //  读取 session

      res.send("ok");

    })

    // 判断用户访问了几次网站之类的

    server.use("/",function(req,res){

      if(req.session[cont]==null){  // 证明用户使第一次来

        req.session[cont] = 1 ;  // 所以给他计数为 1

      }

      else{

        req.session[cont]++;  // 之后每次访问都累加

      }

      console.log(req.session[cont])  // 这个就是用户总共访问的次数

      res.send("ok");

    })

nodejs 中的 cookie 及 session的更多相关文章

  1. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  2. 第74节:Java中的Cookie和Session

    第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...

  3. Flask中使用cookie和session

    Flask中使用cookie和session 设置cookie from flask import Flask,Response app = Flask(__name__) @app.route('/ ...

  4. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  5. django系列7.2--django中的cookie和session基本操作,浏览器登陆验证的不同实现

    django中的cookie和session(02)–操作 一.Django中的cookie操作 ctrl + shift + del 是谷歌浏览器中清除页面缓存和cookie的快捷键 1.设置coo ...

  6. Django---Django中使用COOKIE和SESSION

    Django---Django中使用COOKIE和SESSION 一丶Cookie cookie的由来 # HTTP协议是无状态的. # 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请 ...

  7. Servlet中的cookie和session

    保存数据的2中方式 Cookie Session Cookie 我们可以将一些信息保存到cookie中,cookie存放在对应的浏览器目录里面.每个站点可以保存20个cookie,最大长度不超过4k. ...

  8. Django中的cookie与session

    cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...

  9. 理解会话中的Cookie和Session对象

    会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在java语言中,Servlet程序是由WEB服务器调用,web服务器收到客 ...

随机推荐

  1. HDFS NFS Gateway

    NFS网关支持NFSv3,并允许将HDFS作为客户端本地文件系统进行挂载.目前,NFS Gateway支持并启用以下使用模式: 用户可以通过NFSv3客户端兼容操作系统上的本地文件系统浏览HDFS文件 ...

  2. docker之常用命令

    1) docker run -p : --name mysql -v d:/docker/mysql/conf:/etc/mysql/conf.d -v d:/docker/mysql/logs:/l ...

  3. springboot启动端口占用问题,报错org.apache.catalina.LifecycleException: Protocol handler start failed

    解决办法,找到被占用的端口

  4. 为什么angular library的build不能将assets静态资源打包进去(转)

    Versions Angular CLI: 6.0.7 Node: 9.3.0 OS: darwin x64 Angular: 6.0.3 ... animations, common, compil ...

  5. 解决GitHub添加sshkey仍然无法访问clone远程仓库的问题

    1 ssh -v git@github.com 通过这个命令打印调试信息 ebug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS rece ...

  6. 10.1、LNMT架构

      Java环境安装包下载路径: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  7. ubuntu搭建gerrit+gitweb代码审核系统

    一.Gerrit的简介 Gerrit是Google开源的一套基于web的代码review工具,它是基于git的版本管理系统.Google开源Gerrit旨在提供一个轻量级框架,用于在代码入库之前对每个 ...

  8. SQL注入--盲注及报错注入

    盲注查询 盲注其实就是没有回显,不能直观地得到结果来调整注入数据,只能通过其他方式来得到是否注入成功,主要是利用了一些数据库内置函数来达到的 布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根 ...

  9. java8学习之比较器深入

    继续接着上次[http://www.cnblogs.com/webor2006/p/8331498.html]的比较器进行探究,上次排序采用是的利用Collections.sort()进行的,下面采用 ...

  10. Mongodb的锁 原子性 隔离性 一致性

    读写锁 Mongodb使用读写锁来来控制并发操作: 当进行读操作的时候会加读锁,这个时候其他读操作可以也获得读锁.但是不能或者写锁. 当进行写操作的时候会加写锁,这个时候不能进行其他的读操作和写操作. ...