Javascript 节点+;Passport,错误:身份验证策略必须有名称
我试图在require行中初始化SAML策略。大概是这样的:Javascript 节点+;Passport,错误:身份验证策略必须有名称,javascript,node.js,passport.js,saml,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 m
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:无法读取身份验证器上未定义的属性“name”。如果未定义自定义策略名称,请使用:passport.use(myStrat)代码>
我曾经有过这样的经历(效果很好):
但我希望更改它,因为我需要稍后调用passport saml的Stragety.generateServiceProviderMetadata()
函数。
这(我认为)意味着我需要一个指向新策略实例的变量。
我知道这没什么大不了的,只是想让这个特定策略的代码看起来更符合其他策略,如果可以的话。它们看起来都像:
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);
//在代码的这一部分中为您的策略提供这样的名称
从“@nestjs/passport”导入{PassportStrategy};
导出类JwtAuthStrategy扩展了PassportStrategy(策略“”){
}
//在nest js中如果您想要保存实例,这意味着什么?请详细说明两个例子。@MuhammadHannan他的意思很可能是“保留创建的实例”。在第一个示例中,myStrat
并不完全是策略,而是创建策略的函数。在第二个myStrat
中,是创建的策略。我认为两者之间没有实际区别。
var myStratInstance = new (require('passport-something').Strategy)(
{ .... }
);
passport.use('something', myStratInstance);