在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.sessionreg.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: '退出登录成功'})
})