nodejs——在Express中使用Session认证

发布于:2025-08-01 ⋅ 阅读:(23) ⋅ 点赞:(0)

首先执行npm install express-session命令来安装express-session中间件

然后配置express-session中间件

向session中存数据

从session中取数据

清空session

以下是完整代码:

//导入session中间件
var session = require('express-session')
const express = require('express');
const app = express();
app.use(express.json()); // 解析JSON格式的请求体
app.use(express.urlencoded({ extended: false })); // 解析表单格式的请求体
//配置session中间件
app.use(session({
    secret: 'keyboard cat',//secret属性的值可以为任意字符串
    resave: false,//固定写法
    saveUninitialized: true//固定写法
}))
//向session中存数据
app.post('/api/login',(req,res)=>{
    if(req.body.username !== 'admin' || req.body.password !== '000000'){
        return res.send({status:1, msg:'登录失败'})
    }
    req.session.user = req.body;
    req.session.islogin = true;
    res.send({status:0, msg:'登录成功'})
})
//向session中取数据
app.get('/api/username',(req,res)=>{
    if(!req.session.islogin){
        return res.send({status:1, msg:'fail'})
    }
    res.send({status:0,msg:'success',username:req.session.user.username})
})
//退出登录的接口
app.post('/api/logout',(req,res)=>{
    req.session.destroy()
    res.send({
        status:0,
        msg:'退出登录成功'
    })
})
app.listen(3000,()=>{
    console.log('3000端口服务器已启动');
    
})

为了解析JSON格式的请求体和解析表单格式的请求体我们需要编写以下代码

如果不添加以上代码我们使用Apifox进行测试时会在终端报以下错误

TypeError: Cannot read properties of undefined (reading 'username') at E:\frontStudy\html\nodejs学习\node26\node26.js:13:17 at Layer.handleRequest (E:\frontStudy\html\nodejs学习\node26\node_modules\router\lib\layer.js:152:17) at next (E:\frontStudy\html\nodejs学习\node26\node_modules\router\lib\route.js:157:13) at Route.dispatch (E:\frontStudy\html\nodejs学习\node26\node_modules\router\lib\route.js:117:3) at handle (E:\frontStudy\html\nodejs学习\node26\node_modules\router\index.js:435:11) at Layer.handleRequest (E:\frontStudy\html\nodejs学习\node26\node_modules\router\lib\layer.js:152:17) at E:\frontStudy\html\nodejs学习\node26\node_modules\router\index.js:295:15 at processParams (E:\frontStudy\html\nodejs学习\node26\node_modules\router\index.js:582:12) at next (E:\frontStudy\html\nodejs学习\node26\node_modules\router\index.js:291:5) at Immediate._onImmediate (E:\frontStudy\html\nodejs学习\node26\node_modules\express-session\index.js:514:7)

我们使用Apifox进行测试以下是测试成功的截图(注意在使用Apifox测试之前要先在终端运行代码)


网站公告

今日签到

点亮在社区的每一天
去签到