登录
通过Session保持登录状态
在 Express 这个框架中,默认不支持 Session 和 Cookie
但是我们可以使用第三方中间件:express-session 来解决
npm install express-session- 配置 (一定要在
app.use(router)之前) - 使用
当把这个插件配置好之后,我们就可以通过req.session来发访问和设置Session成员了
添加Session数据:req.session.foo = 'bar'
访问Session数据:req.session.foo
var session = require('express-session')
app.use(session({
// 配置加密字符串,它会在原有加密基础之上和这个字符串拼起来去加密
// 目的是为了增加安全性,防止客户端恶意伪造
secret: '123',
resave: false,
saveUninitialized: false // 无论你是否使用 Session ,都默认直接给你分配一把钥匙
}))
登入
router.get('/login', function (req, res) {
res.render('login.html')
})
router.post('/login', function (req, res) {
// 1. 获取表单数据
// 2. 查询数据库用户名密码是否正确
// 3. 发送响应数据
var body = req.body
User.findOne({
email: body.email,
password: md5(md5(body.password))
}, function (err, user) {
if (err) {
return res.status(500).json({
err_code: 500,
message: err.message
})
}
// 如果邮箱和密码匹配,则 user 是查询到的用户对象,否则就是 null
if (!user) {
return res.status(200).json({
err_code: 1,
message: 'Email or password is invalid.'
})
}
// 用户存在,登陆成功,通过 Session 记录登陆状态
req.session.user = user
res.status(200).json({
err_code: 0,
message: 'OK'
})
})
})
登出
router.get('/logout', function (req, res) {
// 清除登陆状态
req.session.user = null
// 重定向到登录页
res.redirect('/login')
})
来源:CSDN
作者:黎犁泥栗
链接:https://blog.csdn.net/qq_43618136/article/details/104737521