cookie和session


cookie和session的作用

由于http协议是一种无状态的协议,在户登录一个网站时常常会涉及到用户登录的状态保持,来使得用户获得更好的体验。那么cookie和session就是为了实现状态保持的  简单来说就是客户端和服务端是互相不认识的,利用coolie和session将他们关联起来

cookie

cookie是一个简单到爆思路:当客户端访问服务器时,服务器生成一个票据给客户端,当客户端收到票据之后,保存起来;以后客户端每次访问服务器的时候,都需要携带着这个票据。

cookie的执行原理:当客户端访问服务器的时候(服务运用了cookie),则服务器会生成一份cookie传输给客户端,客户端会自动把cookie保存起来;以后客户端每次访问服务器,都会自动的携带着这份cookie。

session

session是一种特殊的cookie。cookie是保存在客户端的,而session是保存在服务端。

当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端;以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id)。

cookie与session的区别

cookie和session都是由后端生成的基于键值对的字符串。

cookie字符串保存在客户端浏览器中,session值保存在服务器中,session比cookie更安全。

cookie与session的第三方中间件安装及使用

cookie-parser

安装

npm i cookie-parser

使用

var cookieParser = require('cookie-parser');//引入cookie-parser

app.use(cookieParser());//使用cookie-parser
 
  
res.cookie('xxcode',"abc");//生成一份cookie(票据)

var cookieParser = require('cookie-parser');

app.use(cookieParser("xiaoxuesheng"));//签名 (加密) 指定秘钥 "xiaoxuesheng"
//使用cookie
  //加密存储
  res.cookie("mycode","abc",{
    signed:true   //加密
  })

express-session

安装

npm i express-session

使用

//引入session中间件
let expressSession=require("express-session")

//使用session中间件
app.use(expressSession({
  resave:true,//每次是否都刷新存储器
  saveUninitialized:true, 
  secret:"xiaoxuesheng" //秘钥
}));



  //将数据存储到session中
  req.session.yourcode='xyz';