我正在尝试在 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/