我一直在遵循一个教程,以使用passport.js在Node.js中进行用户注册和登录身份验证系统。我可以使用'/ login'发布请求简单地登录,但是当我使用一个函数来检查我的用户是否通过身份验证时。它根本无法为我的用户启动会话。
这就是我初始化“ express-session”的方式。
app.use(passport.initialize())
app.use(passport.session())
这是我的登录帖子请求的摘录。
router.post('/login',(req,res,next)=>{
passport.authenticate('local',{ successRedirect: '/dashboard',failureRedirect: '/users/loggin'})(req,res,next);
});
由于successRedirect: '/dashboard'
,它会将我重定向到信息中心。我认为这将为我的身份验证用户启动会话。但是,当我使用这样的条件时,只有在我的用户通过身份验证后,仪表板才可以访问。它无法正常工作,并再次将我重定向到登录页面,就像用户未通过身份验证一样。
auth.js
module.exports = {
ensureAuthenticated: function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/users/login');
}
};
在路线文件中获取仪表板。
const express = require('express');
const router = express.Router();
const { ensureAuthenticated, forwardAuthenticated } = require('../config/auth');
// Welcome Page
router.get('/', forwardAuthenticated, (req, res) => res.render('welcome'));
// Dashboard
router.get('/dashboard', ensureAuthenticated, (req, res) =>
res.render('dashboard', {
user: req.user
})
);
module.exports = router;
如何为用户启动登录会话。因此,在我单击“登录”按钮后,它将保持登录状态。