Skip to content

十四、在Express中使用Session认证

1、安装express-session中间件

bash
npm install express-session

2、配置express-serssion中间件

js
//1、导入session中间件
const session=require('express-session')

//2、配置Session中间件
app.use(session({
	secret:"keyboard cat", //secret属性的值可以为任意字符串
	resave:false,	//固定写法
	saveUninitalized:true	//固定写法
}))

3、向session中存数据

当express-session中间件配置成功后,即可通过req.session访问和使用session对象,从而存储用户的关键信息

js
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	//将用户的信息,存储到Session
	req.session.isLogin=true	//将用户的登录状态存储到Session
	
	res.send({
		status:0,
		msg:'登录成功'
	})
})

4、从session中取数据

js
//获取用户名信息
app.get('/api/username',(req,res)=>{
	if(!req.session.isLogin){
		return res.send({
			status:1,
			msg:'fail'
		})
	}
	
	res.send({
		status:0,
		msg:'登录成功',
		username:req.session.user.username
	})
})

5、清空session

调用req.session.destory()函数,即可清空服务器保存的session信息

js
//退出登录的接口
app.post('/api/logout',(req,res)=>{
	//清空当前客户端对应的session信息
	req.session.destroy()
	res.send({
		status:0,
		msg:'退出登录成功'
	})
})