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';