我使用护照与 passport-saml策略。在策略上,有一个我想要使用的功能。我知道策略就这样使用了:
const SamlStrategy = require('passport-saml').Strategy;
passport.use(new SamlStrategy(
{//options here...}, ...);
现在我怎样才能从passport
变量中访问策略(及其功能)?像passport.Strategy.functionIWantToCall()
?
答案 0 :(得分:2)
您可以使用passport._strategy(NAME)
按名称检索策略对象,并在该对象上按_verify
检索函数:
var strategy = passport._strategy('saml');
var func = strategy._verify;
但请注意,所有这些访问器都以下划线为前缀,这意味着它们应被视为私有(它们没有记录,我在源代码中找到它们)。它们并不意味着像这样访问,只能通过Passport内部访问。
更好的解决方案是创建一个单独的模块来封装策略对象:
// my-strategy.js
module.exports = new SamlStrategy(...);
// In your Passport setup:
...
passport.use(require('./my-strategy')));
...
// And elsewhere where you need to access the strategy:
var strategy = require('./my-strategy');
答案 1 :(得分:0)
解决了
export class AuthController {
constructor(private readonly samlStrategy: SamlStrategy) {
}
public logout(@Req() req, @Res() res) {
// Work around
(this.samlStrategy as any).logout(req, function (err, req) {
if (!err) {
res.send('<h1>Logout Failure!!</h1>');
}
});
}
}