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. pytorch中torch.narrow()函数

    torch.narrow(input, dim, start, length) → Tensor Returns a new tensor that is a narrowed version of  ...

  2. window.prompt()和 window.confirm()选择

    代码截图: 效果:  代码截图: 效果:

  3. js 重要函数

    1. Array.some some() 方法用于检测数组中的元素是否满足指定条件(函数提供) 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测.如果没有满足条件的元素,则返 ...

  4. 64位Win7安装Oracle12C临时位置权限错误解决方案

    今天装备安装Oracle12C体验一下,结果遇到问题:请确保当前用户具有访问临时位置所需的权限,无法继续安装,上网查了一下,解决方案如下:  第一步:  控制面板>所有控制面板项>管理工具 ...

  5. PAT Basic 1001 害死人不偿命的(3n+1)猜想 (15 分)

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...

  6. Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用

    文章目录: 1. time & datetime模块 2. os模块 3. random模块 4. sys模块 5. hashlib模块 6. json模块 7. shutil模块 8. lo ...

  7. server version for the right syntax to use near 'USING BTREE 数据库文件版本不合导致的错误

    MySQL 返回:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MyS ...

  8. Linux基本命令之Vim

    在vim,vi,gedit编辑器中显示行号:        在命令模式下:set nu 取消行号:set nonu 参照博客:https://www.cnblogs.com/Mr0wang/p/728 ...

  9. 〇——HTML的本质以及在Web程序中的作用

    对于所有的Web应用,其实本质上都是一个socket服务端,用户的浏览器就是一个socket的client,我们看看下面这段代码 import socket def handle_request(cl ...

  10. pyhton函数

    函数编写文档 放在函数开头的字符串称为文档字符串(docstring),将作为函数的一部分存储起来 def square(x): 'Calculates the square of the numbe ...