passport.js с несколькими провайдерами аутентификации?
Используя Passport.js, есть ли способ указать несколько поставщиков аутентификации для одного и того же маршрута?
Например (из руководства по паспорту) могу ли я использовать локальные стратегии, стратегии Facebook и Twitter на примере маршрута ниже?
app.post('/login',
passport.authenticate('local'), /* how can I add other strategies here? */
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
1 ответ
Промежуточное программное обеспечение Passport построено таким образом, что позволяет использовать несколько стратегий в одном passport.authenticate(...)
вызов.
Тем не менее, он определяется с помощью OR. Это, это только потерпит неудачу, если ни одна из стратегий не вернула успех.
Вот как вы бы это использовали:
app.post('/login',
passport.authenticate(['local', 'basic', 'passport-google-oauth']), /* this is how */
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
Другими словами, способ его использования заключается в передаче массива, содержащего названия стратегий, с которыми вы хотите, чтобы пользователь проходил аутентификацию.
Кроме того, не забудьте предварительно настроить стратегии, которые вы хотите реализовать.
Вы можете подтвердить эту информацию в следующих файлах GitHub:
Аутентифицируйте, используя основной или дайджест в мульти-аутентичном примере.