无法使用password.js和node.js为用户启动登录会话

时间:2020-04-14 06:38:23

标签: node.js express passport.js

我一直在遵循一个教程,以使用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;

如何为用户启动登录会话。因此,在我单击“登录”按钮后,它将保持登录状态。

0 个答案:

没有答案