- 安裝express-session中間件
npm install express-session
- 配置express-session中間件
// 1.導(dǎo)入express模塊
const express = require('express')
// 2.創(chuàng)建express服務(wù)器的實例
const app = express()
// 3.配置Session中間件
const session = require('express-session')
app.use(session({
secret:'sessionLearn',
resave:false,
saveUninitialized:true
}))
- 向session中存數(shù)據(jù)
- 當(dāng)express-session中間件配置成功后,即可通過req.session來訪問和使用session對象铸豁,從而存儲用戶的關(guān)鍵信息
// ------------------------編寫登陸的接口蒋腮,并直接修改瀏覽器端的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 //用戶的登陸狀態(tài)
})
- 從session中取數(shù)據(jù)
// ----------------------編寫GET接口拨黔,展示提取session信息的過程------------------
app.get('/api/username',(req,res)=>{
// 判斷當(dāng)前是否登陸
if(!req.session.isLogin){
return res.send({status:1,msgg:'fail'})
}
// 從session中獲取用戶信息,并發(fā)送
res.send({
status:0,
msg:'success',
username:req.session.userInfo.username
})
})
- 清空session
- 調(diào)用req.session.destory()函數(shù),即可清空服務(wù)器保存的當(dāng)前用戶的session信息
// ------------------------退出登陸的接口--------------------
app.post('/api/logout',(req,res)=>{
// 清空服務(wù)器端的session
req.session.destory()
// 對瀏覽器端響應(yīng)信息
res.send({
status:1,
msg:'退出登陸成功'
})
})
完整session實例
// 1.導(dǎo)入express模塊
const express = require('express')
// 2.創(chuàng)建express服務(wù)器的實例
const app = express()
// 3.配置Session中間件
const session = require('express-session')
app.use(session({
secret:'sessionLearn',
resave:false,
saveUninitialized:true
}))
// -----------------------------------------------
// 托管靜態(tài)頁面
app.use(express.static('./pages'))
// 解析 POST 提交過來的表單數(shù)據(jù)
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 //用戶的登陸狀態(tài)
})
// ----------------------獲取用戶信息的接口------------------
app.get('/api/username',(req,res)=>{
// 判斷當(dāng)前是否登陸
if(!req.session.isLogin){
return res.send({status:1,msgg:'fail'})
}
// 從session中獲取用戶信息,并發(fā)送
res.send({
status:0,
msg:'success',
username:req.session.userInfo.username
})
})
// ------------------------退出登陸的接口--------------------
app.post('/api/logout',(req,res)=>{
// 清空服務(wù)器端的session
req.session.destory()
// 對瀏覽器端響應(yīng)信息
res.send({
status:1,
msg:'退出登陸成功'
})
})