在Express项目中,只需要安装express-session
中间件,即可在项目中使用Session认证:
npm i express-session
express-session
中间件安装成功后,需要通过app.use0来注册session中间件,示例代码如下:
//1,导入session中间件
var session =require'express-session')
//2.配置Session中间件
app.use(session({
secret: 'keyboard cat',//secret属性的值可以为任意字符串
resave: false,//固定写法
saveUninitialized: true//固定写法
}))
当express-session
中间件配置成功后,即可通过req.session来访问和使用session对象,从而存储用户的关键信息:
app.post('/api/login', (req, res) => {
// 判断用户提交的登录信息是否正确
if (req.body.username !== 'admin' && req.body.password !== '000000') {
return res.send({status: 1, msg: '登录失败'})
}
// 只有成功配置了 express-session 这个中间件之后,才能够获取到 req.session
reg.session.user = req.body //将用户的信息,存储到Session中
req.session.islogin = true
//将用户的登录状态,存储到Session中
res.send({status: 0, msg: '登录成功'})
})
可以直接从req.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})
})
调用req.session.destroy()
函数,即可清空服务器保存的session信息。
只会清空当前用户的Session,不会清空所有用户的Session
// 退出登录的接口
app.post('/api/logout', (req, res) => {
//清空当前客户端对应的session信息
req.session.destroy()
res.send({
status: 0,
m5g: '退出登录成功'
})
})