- 安装express-session中间件
npm install express-session
- 配置express-session中间件
// 1.导入express模块
const express = require('express')
// 2.创建express服务器的实例
const app = express()
// 3.配置Session中间件
const session = require('express-session')
app.use(session({
secret:'sessionLearn',
resave:false,
saveUninitialized:true
}))
- 向session中存数据
- 当express-session中间件配置成功后,即可通过req.session来访问和使用session对象,从而存储用户的关键信息
// ------------------------编写登陆的接口,并直接修改浏览器端的session--------------------
app.post('/api/login',(req,res)=>{
// 判断用户提交的登陆信息是否正确
if(req.body.username !== 'admin' || req.body.password !== '000000'){
return res.send({staus:1,msg:'登陆失败'})
}
// 将登陆成功后的信息,保存到Session中
req.session.userInfo = req.body //用户的信息
req.session.isLogin = true //用户的登陆状态
})
- 从session中取数据
// ----------------------编写GET接口,展示提取session信息的过程------------------
app.get('/api/username',(req,res)=>{
// 判断当前是否登陆
if(!req.session.isLogin){
return res.send({status:1,msgg:'fail'})
}
// 从session中获取用户信息,并发送
res.send({
status:0,
msg:'success',
username:req.session.userInfo.username
})
})
- 清空session
- 调用req.session.destory()函数,即可清空服务器保存的当前用户的session信息
// ------------------------退出登陆的接口--------------------
app.post('/api/logout',(req,res)=>{
// 清空服务器端的session
req.session.destory()
// 对浏览器端响应信息
res.send({
status:1,
msg:'退出登陆成功'
})
})
完整session实例
// 1.导入express模块
const express = require('express')
// 2.创建express服务器的实例
const app = express()
// 3.配置Session中间件
const session = require('express-session')
app.use(session({
secret:'sessionLearn',
resave:false,
saveUninitialized:true
}))
// -----------------------------------------------
// 托管静态页面
app.use(express.static('./pages'))
// 解析 POST 提交过来的表单数据
app.use(express.urlencoded({ extended: false }))
// ------------------------编写登陆的接口--------------------
app.post('/api/login',(req,res)=>{
// 判断用户提交的登陆信息是否正确
if(req.body.username !== 'admin' || req.body.password !== '000000'){
return res.send({staus:1,msg:'登陆失败'})
}
// 将登陆成功后的信息,保存到Session中
req.session.userInfo = req.body //用户的信息
req.session.isLogin = true //用户的登陆状态
})
// ----------------------获取用户信息的接口------------------
app.get('/api/username',(req,res)=>{
// 判断当前是否登陆
if(!req.session.isLogin){
return res.send({status:1,msgg:'fail'})
}
// 从session中获取用户信息,并发送
res.send({
status:0,
msg:'success',
username:req.session.userInfo.username
})
})
// ------------------------退出登陆的接口--------------------
app.post('/api/logout',(req,res)=>{
// 清空服务器端的session
req.session.destory()
// 对浏览器端响应信息
res.send({
status:1,
msg:'退出登陆成功'
})
})