passport.authenticate与nodejs

时间:2018-02-06 08:25:23

标签: javascript node.js ecmascript-6 passport.js passport-saml

我基本上试图将登录方法分离到一个单独的文件(从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 个答案:

答案 0 :(得分:3)

passport.authenticate构建一个必须传递给app.get的{​​{3}}。这意味着loginCtrl必须返回它。

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

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

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