cookie-session
用户和服务器交互通过什么? http协议,http是无状态的通过IP(公司环境)通过浏览器保存一些信息,每次访问服务器带过去如何保存信息给浏览器:1. 前端种cookie/localstorage2. 后端种: 前端请求后端,后端给前端种cookie(加了密)的同时,在服务器上生成seesion服务器给浏览器种只种cookie: cookie-parser服务器给浏览器种cookie的同时在服务器上生成seesion: cookie-session安装+引入种: req.session.key=value 读: req.session.key删: delete req.seesion.key | req.session.key = undefined/null小黑框npm initnpm i express cookie-session --save记得把package内的script改为"start":"supervisor ./app.js"
let express=require('express')var cookieSession = require('cookie-session')let app=express()app.listen(3000)app.use(express.static("./public"))// 安装中间件,key必须传
app.use(cookieSession({name: 'session',//请求体身上绑定一个sessionkeys: ['key1', 'key2']
}));
app.get('/login',(req,res,next)=>{// 得到用户名和密码req.query/body// 兜库对比// 给浏览器中cookie,同时给服务器保留一份session// 返回数据给浏览器req.session['user_id']='bmw';//种// req.session[req.query.username]=req.query.password;res.send({err:0})//postman内body内会有内容// console.log(req.session)//若果中间件没有传就是undefined// 此时在浏览器或者postman内看到cookie是加密的
})
app.get('/user',(req,res,next)=>{// 接受浏览器携带过来的cookie,对比服务器上的session// 对比成功:返回user数据,失败:返回失败数据console.log(req.session['user_id']);res.send({err:0})// 返回数据给浏览器
})
app.get('/logout',(req,res,next)=>{// 删除浏览器的cookie// 对比成功:返回user数据,失败:返回失败数据req.session['user_id'] = undefined;res.send({err:0})// 返回数据给浏览器
})
例子
let express = require('express');
var cookieSession = require('cookie-session')let app = express();
app.listen(3000);app.use(express.static('./public'))//安装中间件
app.use(cookieSession({name: 'bulala',keys: ['key1', 'key2']
}))app.get('/login',(req,res,next)=>{//得到用户名和密码 req.query/body// 兜库对比// 给浏览器种cookie ,同时给服务器保留一份sessionreq.session[req.query.username]=req.query.passwordres.send({err:0})//返回数据给浏览器
})app.get('/user',(req,res,next)=>{// 接收浏览器携带过来的cookie ,对比 服务器上的 session// 对比成功: 返回user数据 失败: 返回失败数据console.log(req.session['alex'])let session = req.session['alex'];if(session){返回数据给浏览器res.send({err:0,data:'数据'})}else{res.send({err:1,mess:'未登录'})}})app.get('/logout',(req,res,next)=>{// 删除浏览器段的cookiereq.session['alex'] = undefinedres.send({err:0})
})