从护照获取护照策略

时间:2016-06-23 11:56:34

标签: javascript passport.js

我使用护照与 passport-saml策略。在策略上,有一个我想要使用的功能。我知道策略就这样使用了:

const SamlStrategy = require('passport-saml').Strategy;

   passport.use(new SamlStrategy(
   {//options here...}, ...);

现在我怎样才能从passport变量中访问策略(及其功能)?像passport.Strategy.functionIWantToCall()

这样的东西

2 个答案:

答案 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>');
            }
        });
    }
}