2016-02-29 41 views
0
passport.authenticate('local-register',{ 
      successRedirect: '/login', 
      failureRedirect: '/path_to_greatness', 
     })(req, res, next); 

我在寫一個無狀態的API,所以上面的方法就像successRedirect不會滿足我的需求。但我仍然想使用護照層,我該如何回調?Passport auth callback而不是重定向

+0

這是相當開放的。你可以嘗試一下並詢問它是否不起作用? – icedwater

回答

1

您可以將回調傳遞給passport.authenticate,這應該適合各種各樣的用例。在傳遞迴調時,您必須自己創建會話(假設認證成功)。 (docs

下面是使用一個簡單的例子:

function handler(req, res, next) { 
    // assuming we're using a "local" strategy 
    passport.authenticate('local', (err, user, params) => { 
    if (err) return next(err) 
    if (!user) return next(new Error('Authentication Failed')) 

    // user is authenticated, create a session 
    req.logIn(user, (err) => { 
     if (err) return next(err) 
     // handle response 
     res.status(200).json({ some: 'data' }) 
    }) 
    })(req, res, next) 
} 
+0

自從他提到他使用JWT以來,他不需要任何會話。 – Jennifer

+0

@Jennifer OP沒有提及智威湯遜。是的,一個純粹的無狀態API會使用類似於JWT的認證系統,但是OP明確要求爲passportjs提供一個回調解決方案,它依賴於會話。 – Nindaff

+0

如果我想使用智威湯遜,這套房是否會滿足我的需求?如何在護照中禁用會話? –

相關問題