cookie-session
用户和服务器交互通过什么? http协议,http是无状态的
通过IP(公司环境)
通过浏览器保存一些信息,每次访问服务器带过去
如何保存信息给浏览器:
1. 前端种cookie/localstorage
2. 后端种: 前端请求后端,后端给前端种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 init
npm 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',//请求体身上绑定一个session
keys: ['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 ,同时给服务器保留一份session
req.session[req.query.username]=req.query.password
res.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)=>{
// 删除浏览器段的cookie
req.session['alex'] = undefined
res.send({err:0})
})