passport.authenticate не работает должным образом с nodejs

Я в основном пытаюсь выделить методы входа в отдельный файл (из app.js).

Это прекрасно работает следующим образом:

== app.js ==

app.get("/login", passport.authenticate(passportConfig.config.passport.strategy, 
          {
            successRedirect: "/",
            failureRedirect: "/login"
            })
        );

Но когда я разделяю метод на другой файл, перенаправление (или, возможно, аутентификация не работает)

== Новый app.js

app.get("/login", authController.loginCtrl)

== AuthenticationController

import PassportConfig from './passportConfig';
import passport from 'passport';
export default class AuthenticationController{
  constructor(){

  }
  loginCtrl(){
        let passportConfig = new PassportConfig();
        var config = passportConfig.config;

        passport.authenticate(config.passport.strategy, {
            successRedirect: "/",
            failureRedirect: "/login"
        });
    }
}

Может кто-нибудь, пожалуйста, помогите мне, что я делаю неправильно.

1 ответ

Решение

passport.authenticate создает связующее промежуточное ПО, которое должно быть передано app.get, Это значит loginCtrl должен вернуть его.

app.get("/login", authController.loginCtrl())

loginCtrl(){
    let passportConfig = new PassportConfig();
    var config = passportConfig.config;

    return passport.authenticate(config.passport.strategy, {
        successRedirect: "/",
        failureRedirect: "/login"
    });
}
Другие вопросы по тегам