簡體   English   中英

PassportJs 在身份驗證后不重定向

[英]PassportJs not redirecting after authentication

我在使用 Passport 進行身份驗證時遇到了一些問題。 我已經定義了我的注冊策略如下:

    passport.use('local_signup', new localStrategy({
  usernameField: 'username',
  passwordField:'password',
  passReqToCallback: true
},function(req,username, password,done){
User.findOne({username: username},function(err,user){
  if(err){
    console.log(err);
  } else{
    if(user){
      console.log("user exists.") 
    }
    else{
      const newUser = new User();
      newUser.email = req.body.email;
      newUser.password =req.body.password;
      newUser.username = req.body.user_name;
      newUser.first_name = req.body.first_name;
      newUser.last_name = req.body.last_name;
      newUser.save(function(err){
        if(err){
          console.log(err);
        }else{
          console.log('success');
        }
      })
    }
  }

})
})
)

然后我在我的注冊路線中調用了這個策略

app.post('/register', passport.authenticate('local_signup', {
        successRedirect : '/drinks',
        failureRedirect : '/register',
        failureFlash : true
    }));

如果認證成功,它應該觸發飲料路線

  app.get('/drinks',function(req,res){
    if(req.isAuthenticated()){
      res.render('start');
    } else {
      res.redirect('/login')
  }

}) 

successRedirect 不會重定向到所需的頁面。 它仍然停留在注冊路線上。 然而,填充的用戶顯示在我的數據庫中,所以至少我的策略是有效的。 我不知道如何調試這個。 任何幫助,將不勝感激。 謝謝

您沒有使用done() 據我所知,它是策略代碼的退出點,並根據您傳入的參數讓流程走向成功或失敗。 它是策略實現代碼中回調中的一個參數。 這是護照內部的東西

如果成功,可以這樣調用:

return done(null, newUser);

出錯時這樣調用:

done(err);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM