javascript – Passport – 动态覆盖策略

我有一个带护照库的节点应用程序.我使用这样的护照策略:
passport.use(someStrategy)

以后可以动态地覆盖该策略吗?在应用程序运行期间,我希望在某些时候使用不同的策略.实际上是相同的策略,但配置不同.

如果我只是制作另一个passport.use(someOtherStrategy),那么这不仅仅是为护照添加一个“中间件”吗?然后那不会删除旧的,只需再添加一个.我希望删除旧的.因此,要么覆盖,要么删除添加新的.

解决方法

挖掘护照源代码表明,可以轻松完成覆盖.
以下是代码的相关部分:
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你的答案很有帮助,但很少偏离主题.可能部分是因为我不是非常清楚我正在寻找一种覆盖现有策略的方法,而不仅仅是如何配置多种策略.对不起,我在问题描述中并不是很清楚.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...