express学习笔记:通过session实现用户登录和权限验证
本文介绍如何在[express]中通过使用express-session中间件实现session存储和读取用户登录信息。
1、安装express-[session]中间件
通过以下命令安装express-session中间件
npm i express-session
2、引用express-session
在express中通过require引入express-session中间件,然后通过use使用express-session中间件并设置默认参数。
const express = require('express');
const session = require('express-session');
app = express();
app.use(session({
secret: 'fse',
resave: false,
saveUninitialized: true,
}))
3、保存用户登录信息到session
在用户登录接口中,如果用户登录成功,则将用户信息保存到req.session属性中,只有引用了express-session中间件后,req中才会有session属性。
// 登录
app.post('/user/login', (req, res) => {
// console.log('req', req);
if(req.body.userName === 'admin' && req.body.password === '111111'){
req.session.user = req.body;
req.session.isLogin = true;
res.send({
status: 0,
msg: '登录成功',
})
} else {
res.send({
status: 1,
msg: '登录失败',
})
}
})
4、获取用户登录信息
通过判断session中是否保存有用户登录信息,如果有则返回登录信息,否则提示请先登录。
// 获取登录名
app.get('/user/userName', (req, res) => {
if(!req.session?.isLogin){
res.send({
status: 1,
msg: '请先登录',
})
} else{
res.send(req.session.user.userName);
}
})
5、用户退出登录
用户退出登录时,通过调用session的destroy方法销毁session信息。req.session中的数据将被清空。
// 退出登录
app.post('/user/loginOut', (req, res) => {
req.session.destroy();
res.send({
status: 0,
msg: '退出登录成功',
})
})
6、完整的代码示例
const { urlencoded } = require('body-parser');
const express = require('express');
const session = require('express-session');
app = express();
app.use(session({
secret: 'fse',
resave: false,
saveUninitialized: true,
}))
app.use(urlencoded({ extended:false }));
// 登录
app.post('/user/login', (req, res) => {
// console.log('req', req);
if(req.body.userName === 'admin' && req.body.password === '111111'){
req.session.user = req.body;
req.session.isLogin = true;
res.send({
status: 0,
msg: '登录成功',
})
} else {
res.send({
status: 1,
msg: '登录失败',
})
}
})
// 获取登录名
app.get('/user/userName', (req, res) => {
if(!req.session?.isLogin){
res.send({
status: 1,
msg: '请先登录',
})
} else{
res.send(req.session.user.userName);
}
})
// 退出登录
app.post('/user/loginOut', (req, res) => {
req.session.destroy();
res.send({
status: 0,
msg: '退出登录成功',
})
})
app.listen(80, () => {
console.log('http://127.0.0.1');
})
扫描下方二维码,关注公众号:程序进阶之路,实时获取更多优质文章推送。

扫码关注