gpt4 book ai didi

javascript - Passport - 动态覆盖策略

转载 作者:数据小太阳 更新时间:2023-10-29 04:41:39 25 4
gpt4 key购买 nike

我有一个带有 Passport 库的 Node 应用程序。我使用这样的 Passport 策略:

passport.use(someStrategy)

以后是否可以动态覆盖该策略?在应用程序运行期间,我想在某个时候使用不同的策略。实际上是相同的策略,但配置不同。

如果我只制作另一个 passport.use(someOtherStrategy),那么不就是向 passport 添加另一个“中间件”吗?那不会删除旧的,只需添加一个。我希望旧的被删除。因此,要么覆盖,要么删除并添加一个新的。

最佳答案

深入研究 passport 源代码后发现,重写很容易完成。这是代码的相关部分:

Authenticator.prototype.use = function(name, strategy) {
if (!strategy) {
strategy = name;
name = strategy.name;
}
if (!name) { throw new Error('Authentication strategies must have a name'); }

this._strategies[name] = strategy;
return this;
};
...
...
Authenticator.prototype.unuse = function(name) {
delete this._strategies[name];
return this;
};

从代码中可以看出,如果您使用的策略的名称已被 _strategies 列表中的另一个策略使用,那么它会被新策略替换。也可以删除方法未使用的策略,如代码中所示。

@Mitch 您的回答很有帮助,但几乎没有偏离主题。可能部分是因为我不是很清楚我正在寻找一种方法来覆盖现有策略,而不仅仅是如何配置多个策略。抱歉,我的问题描述不是很清楚。

关于javascript - Passport - 动态覆盖策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45913607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com