0

我基本上是在尝试将登录方法分离到一个单独的文件中(从 app.js 中分离出来)。

这样可以正常工作:

== app.js ==

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

但是当我将方法分离到另一个文件时,重定向(或者可能是身份验证似乎不起作用)

== 新的 app.js

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

== 身份验证控制器

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"
        });
    }
}

任何人都可以帮助我我做错了什么。

4

1 回答 1

3

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"
    });
}
于 2018-02-06T08:28:25.980 回答