从护照访问护照策略
Access passport strategy from passport
我使用带有 passport-saml 策略 的护照。在 Strategy 上,有一个我想使用的函数。我知道 策略 是这样使用的:
const SamlStrategy = require('passport-saml').Strategy;
passport.use(new SamlStrategy(
{//options here...}, ...);
现在如何从 passport
变量访问 strategy(及其函数)?类似于 passport.Strategy.functionIWantToCall()
?
您可以使用 passport._strategy(NAME)
按名称检索策略对象,并通过 _verify
在该对象上检索函数:
var strategy = passport._strategy('saml');
var func = strategy._verify;
但是,请注意所有这些访问器都带有下划线前缀,这意味着它们应该被视为 private(它们没有记录,我在源代码中找到它们).它们不应该像这样访问,只能在内部通过 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');
用这个
解决了
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>');
}
});
}
}
我使用带有 passport-saml 策略 的护照。在 Strategy 上,有一个我想使用的函数。我知道 策略 是这样使用的:
const SamlStrategy = require('passport-saml').Strategy;
passport.use(new SamlStrategy(
{//options here...}, ...);
现在如何从 passport
变量访问 strategy(及其函数)?类似于 passport.Strategy.functionIWantToCall()
?
您可以使用 passport._strategy(NAME)
按名称检索策略对象,并通过 _verify
在该对象上检索函数:
var strategy = passport._strategy('saml');
var func = strategy._verify;
但是,请注意所有这些访问器都带有下划线前缀,这意味着它们应该被视为 private(它们没有记录,我在源代码中找到它们).它们不应该像这样访问,只能在内部通过 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');
用这个
解决了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>');
}
});
}
}