javascript - Node + Passport ,错误: Authentication strategies must have a name

标签 javascript node.js passport.js saml

我正在尝试在 require 行中初始化 SAML 策略。像这样:

var myStrat = new require('passport-something').Strategy(
    { .... }
);
passport.use('something', myStrat);

但是我得到了错误:

.../passport/lib/authenticator.js:54
  if (!name) { throw new Error('Authentication strategies must have a name'); }
               ^

Error: Authentication strategies must have a name
    at Authenticator.use ...

TypeError: Cannot read property 'name' of undefined at Authenticator.use 如果未定义自定义策略名称:passport.use(myStrat);

.

我有过这样的经历(有效):

var mySomething = require('passport-something');
var myStrat = new mySomething.Strategy(
    { .... }
);
passport.use(myStrat);

但我想更改它,因为稍后我需要调用 passport-saml 的 Stragety.generateServiceProviderMetadata() 函数。 这(我认为)意味着我需要一个指向新 Strategy 实例的变量。 我知道这没什么大不了的,如果可以的话,我只是想让这个特定策略的代码看起来更符合其他策略。这一切看起来像:

var GoogleStrat = require( 'passport-google-oauth2' ).Strategy;
passport.use('google', new GoogleStrat(
    ....
));

最佳答案

这应该有效:

var myStrat = require('passport-something').Strategy(
    { .... }
);
passport.use('something', new myStrat());

或者,如果您想保留实例:

var myStratInstance = new (require('passport-something').Strategy)(
    { .... }
);
passport.use('something', myStratInstance);

关于javascript - Node + Passport ,错误: Authentication strategies must have a name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35302662/

相关文章:

javascript - 单元测试中的 Passport JWT 身份验证 - 套接字挂断

javascript - Express + Passport + Redis session ?

javascript - 如何创建Hotjar之类的应用程序?

javascript - AWS Lambda 持续时间与函数运行时间

javascript - 当我尝试从 Ajax 发送 POST 时 PHP 未定义索引数据

node.js - react-hook-form & material-UI 选择

linux - 由在 docker 中运行的 Jenkins 触发的 npm 测试输出中的编码损坏

node.js - 将 Passport 使用从 Mongoose 转换为 Sequelize

javascript - React 如何将子组件 onClick 链接到父状态

javascript - "Function"是函数,这怎么可能?