为什么使用护照JS进行身份验证无法正常工作

时间:2020-03-05 15:32:44

标签: node.js express authentication session passport.js

我想要的是

当我进入 / test 时,它首先检查它是否登录到* / test /,如果不是,则进入 / login

index.js

router.get('/test', issignin, (req, res, next)=>{
  res.render('test'); 
});
//............
router.get('/login', (req, res, next)=>{
  var messageLoginErr = req.flash('signinError')
  res.render('login', {messages : messageLoginErr}); 
});

router.post('/login', passport.authenticate('local-signin', {
  session: false,
  successRedirect: '/',
  failureRedirect: '/login',
  failureFlash: true,
}));

//logout
router.get('/logout', (req, res, next)=>{
  req.logOut()
  res.redirect('/test')
  console.log(req.isAuthenticated())

});


function issignin(req, res, next){
  if(! req.isAuthenticated()){
    //res.redirect('login');
    return;
  }
  next();
}

app.js

//session
app.use(session({
  secret : 'blablabla',
  saveUninitialized: true,
  resave: true
}));

探针是,当我转到localhost:3000/test时,它会自动将我重定向到localhost:3000/login,然后当我再次登录并转到localhost:3000/test时,它也会重定向无论我是否进入localhost:3000/login(是否从当前帐户注销 ),我都必须localhost:3000/logout登录,从所有方面来说,我都需要登录页面

我为此使用了(isAuthenticated()) passport.js

0 个答案:

没有答案