不同航线如何使用相同的护照策略?

2024-03-24

假设我有这样的代码:

var api1 = require('api1');
var api2 = require('api2');
var app = express();
app.use('/api1', api1);
app.use('/api2', api2);

这是 api1 模块的代码:

var router = express.Router();
var options = {
    jwtFromRequest:ExtractJwt.fromAuthHeader(),
    secretOrKey:config.JWTSecret,
    algorithms:['HS256']
}

passport.use(new JwtStrategy(options, function(jwt_payload, verify) {
    //here I look for the user in database No.1
}));
router.post('/files', passport.authenticate('jwt', { session: false}), function(req, res) {
   //...
}
module.exports = router;

这是 api2 模块的代码:

var router = express.Router();
var options = {
    jwtFromRequest:ExtractJwt.fromAuthHeader(),
    secretOrKey:config.JWTSecret,
    algorithms:['HS256']
}

passport.use(new JwtStrategy(options, function(jwt_payload, verify) {
    //here I look for the user in database No.2
}));
router.post('/files', passport.authenticate('jwt', { session: false}), function(req, res) {
   //...
}
module.exports = router;

这是行不通的。在这两种情况下,如果我对“/api1/files”和“/api2/files”进行 POST,它将在数据库 No2 中查找用户。如果这个问题没有解决方案,使用passport.js api,还有哪些其他可能的方法来处理此类问题?


实现这一点的技巧是使用命名策略语法。基本上当你打电话时passport.use()您可以传递一个可选的第一个参数,告诉 Passport 策略的名称,然后使用该名称(而不是默认名称)authenticate称呼。所以在你的情况下你可以这样做:

passport.use('jwt-1', new JwtStrategy(options, function(jwt_payload, verify) {
    //here I look for the user in database No.1
}));

router.post('/files', passport.authenticate('jwt-1', { session: false}), function(req, res) {
   //...
}

然后,您的 api2 会将其策略命名为“jwt-2”或任何对您有意义的名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同航线如何使用相同的护照策略? 的相关文章

  • ES6 类文字中的 IIFE

    在 ES5 中我们都可以这样做 myClass prototype myMethod function return function 我可以对 ES6 类文字执行同样的操作吗 不 至少现在还没有 ES6 类仅支持声明方法 因此任何不直接为
  • 有没有办法将 Google 文档分割成多个 PDF?

    我想在 Google Scripts VBA 代码中复制我为 Word 文档编写的代码 基本上 它通过搜索我插入文档中的标签 将文档 切片 为多个 PDF 文件 目的是允许合唱团使用 forScore 管理乐谱的应用程序 在切片点插入先前注
  • npm WARN 已弃用 [email protected]:改用 uuid 模块

    当我尝试时 npm install g cordova latest总是得到npm 警告已弃用 电子邮件受保护 cdn cgi l email protection 使用 uuid 模块代替 mac 操作系统塞拉利昂 10 12npm v
  • 光标:IE 8 和 9 中的自动行为

    我想要的是为整个正文标记指定cursor pointer 这样页面的背景是可点击的 但我也希望页面的其余部分像以前一样工作 所以我尝试为div设置cursor auto 其中包含这一页 在 FF Chrome 和 safari 中 它工作得
  • 如何将查询参数添加到守卫中的路由并将其传递给 Angular 4 中的组件?

    我在我的 Angular 4 应用程序中使用路由保护 如果条件满足并返回 true 我想向路由添加一个查询参数 这是我一直在研究的代码 Injectable export class ViewGuardService implements
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • 如何使 fs.readFile 异步等待?

    我这里有这个 NodeJS 代码 它读取文件夹并处理文件 该代码有效 但它仍然是先打印所有文件名 然后只读取文件 如何获取一个文件 然后先读取该文件的内容 而不是先获取所有文件 async function readingDirectory
  • 获取输入图像类型选择的图片并加载到图像标签中

    所以 我有一个用于上传 img 文件的输入框 我想要做的是从该数据 或选定的源 中获取数据并将其路由到图像标签的 src 属性中 像这样的东西 http jsfiddle net QC2c4 http jsfiddle net QC2c4
  • Lightbox:如何翻译“Image x of x”文本?

    我使用 Lightbox 2 作为图像集 当我的网站的访问者单击该集中的缩略图时 它将显示 图像的放大版本 下面是 描述 取自 a 标题属性 其下方 文本 Image x of x 例如 Image 1 of 12 有谁知道在哪里翻译 更改
  • 将屏幕宽度获取到 javascript 变量中并通过 ajax 将其发送到 php 页面以避免页面加载

    这是JS检测我的页面命名上的屏幕分辨率index html并将其发送到 php 以便可以使用以下方式检索值 GET 这是我的PHP文件命名的内容process php
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • 如何使用 Node.js 解析 JSON? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我应该如何使用 Node js 解析 JSON 是否有一些模块可以安全地验证和解析 JSON 你可以简单地使用JSON parse h
  • Intern JS - 如何在链式 Command 方法中使用 Promise.all()?

    我是用 Intern JS 编写测试的新手 并且一直在遵循他们的文档来使用对象接口 https theintern github io intern interface object and 页面对象 https theintern git
  • IE9 中的无效字符 DOM 异常

    以下这段 JS 曾经在 IE8 中工作 现在在 IE9 中失败 document createElement 我收到以下异常 SCRIPT5022 DOM 异常 INVALID CHARACTER ERR 5 上面这段代码是不是不符合标准呢
  • 为什么我从 c# 到 js 得到不同的 MD5 哈希值?

    我有一个用于加密密码的 C 函数 System Security Cryptography MD5CryptoServiceProvider md5Provider new System Security Cryptography MD5C
  • Dojo“正在加载”消息

    我是 Dojo 新手 所以我需要一些帮助 我的一些链接需要一段时间 当用户单击时 页面开始加载需要几秒钟 我想添加一条 正在加载 消息 我可以用 旧时尚方式 来做 但我想学习新的 更简单 更智能的 Dojo 方式 具体如何工作现在并不重要
  • redux - 如何存储和更新键/值对

    我正在使用 redux 和 React js 我想存储简单的键 值对 但无法获得正确的减速器语法 在这种情况下 每个键 值对将保持与外部系统的连接 这是正确的做法吗 我刚开始使用 redux 所以这有点神秘 export default s
  • 除非打开开发人员工具,否则 IE8 Javascript 无法运行?

    由于某种原因 在 IE8 中 除非我在打开开发工具的情况下重新加载页面 否则 javascript 不会运行 我关闭开发人员工具并重新加载页面 然后 javascript 停止工作 我没有收到任何错误报告 无论如何它们也没有任何用处 还有其
  • javascript 闭包和对象引用

    我的情况有点晦涩难懂 主要是因为我认为我已经掌握了闭包 所以基本上我想要的是将集合重置为默认值 假设我有一个集合 它具有带有对象参数数组的构造函数 var c new collection x y z 然后集合定期更新 因为我没有保留数组的
  • 尽管 getBoundingClientRect() 是假的,但如何将事件坐标转换为 SVG 坐标?

    我正在尝试根据鼠标的位置在 SVG 元素上动态绘制内容 不幸的是 我很难将 mousemove 事件中的鼠标坐标转换为 SVG 元素的坐标空间 这是我一直在测试的一个有缺陷的函数 CylinderDemo prototype handleM

随机推荐

  • 在 SQL 中从数据库表中删除除前 n 之外的所有内容

    从 sql 中的表中删除所有行但保留顶部的 n 行的最佳方法是什么 DELETE FROM Table WHERE ID NOT IN SELECT TOP 10 ID FROM Table Edit Chris 带来了良好的性能提升 因为
  • 请求范围的 bean 和数据模型初始化?

    更新二 好的 我设法缩小了范围 我有一个带有数据表的页面 具有排序和过滤功能 两者都发生在数据库中 换句话说 我不使用我使用的 rich datatable 的嵌入式功能 而是让 DB 来完成工作 我与请求范围豆子 唯一的会话范围 bean
  • 如何可靠地获取 C 风格数组的大小?

    如何可靠地获取 C 风格数组的大小 经常推荐的方法似乎是使用sizeof 但它不起作用foo函数 其中x传入 include
  • std::cin 用于双精度和字符串

    我正在做货币兑换练习 程序应从输入流中读取货币的金额和名称 并以本国货币返回其值 double amount 0 0 std string currency std cout lt lt Please enter amount and cu
  • 此 Blade 卫生系统是否正常工作(双花括号与三花括号)?

    很抱歉 这很可能是我自己的误解 而不是实际存在的问题 我对 Laravel 和 Blade 模板相当陌生 我正在尝试输出从Input get 然而 当我通过双花括号和三花括号输出字段时 输出之间似乎没有区别 这是我的观点的摘录 data I
  • 如何模拟作为函数的 Angular 服务?

    我们有一个所谓的CORShttpService 这基本上是一个包装 httpservice 但是封装了一些我们需要的CORS功能 我现在正在为具有以下功能的服务编写一些测试CORShttpService注入其中 该服务的代码如下 CORSh
  • 如何在 Kotlin 中使用堆栈?

    如何在 Kotlin 中使用 Stack 来自 java 或者还有其他替代方案吗 我正在尝试将列表转换为堆栈 科特林 1 3 70介绍了kotlin collections ArrayDeque https kotlinlang org a
  • 来自 Node.js BigQuery 客户端库的更详细错误消息

    我用的是官方的与 BigQuery 的 Google Node 连接器 https github com googleapis nodejs bigquery 我有以下片段将记录流式传输到数据库中 module exports sendTo
  • 在 Angular JS 中解码 HTML 实体

    如何使用 Angular JS 解码文本中的 HTML 实体 我有字符串 quot 12 10 On Going Submission of quot quot Made Up quot quot Samples quot 我需要一种使用
  • Android Jack 编译器未从 proguard 规则中删除日志

    我尝试过使用 assumenosideeffects class android util Log public static boolean isLoggable java lang String int public static in
  • canvas ImageData 删除白色像素

    我有一些 html 图像有白色背景 我需要删除白色背景 我想我可以使所有白色像素透明 但我不知道该怎么做 我只想使用 html javascript 这是如何做到的 function white2transparent img var c
  • Spring IOC 和 Spring AOP 的区别

    有什么区别春季国际奥委会 and 春季AOP以及它们的重要性 您在网上搜索过 IoC 和 AOP 吗 有一个lot对两者的引用 简而言之 IoC 允许外部力量来决定代码将使用什么实现 而不是由代码决定实现 外力 可能是配置文件 单元测试 其
  • 为什么从 Unicode 字符集中删除了 U+D800 到 U+DFFF 范围内的代码点?

    我正在学习UTF 16编码 并且我读到如果你想表示U 10000到U 10FFFF范围内的代码点 那么你必须使用代理对 其范围在U D800至 U DFFF 假设我想对以下代码点进行编码 U 10123 二进制为 1000000010010
  • Python 中的随机数生成方法有何不同?

    生成随机数int在 Python 中 0 到 10 之间 我可以执行以下任意操作 import numpy as np print np random randint 0 10 or import random print random r
  • Google 关于推送通知的回应

    我正在创建一个用于 Google 日历集成的应用程序 当任何人手动更改 Google 日历事件时 我试图从 Google 获取通知 因此 我们在 Google 和我的应用程序之间创建了一个通道 现在的问题是 当 google 将响应标头发送
  • 如何编写通用方法来查找最大元素并调用该方法?

    当我试图解决运动问题时来自泛型教程问答 http docs oracle com javase tutorial java generics QandE generics answers html我的答案略有不同 我的回答 public s
  • 完成调试/编码后,如何处理 print()

    致Python专家 我使用了很多 print 来检查变量的值 完成后 我需要删除 print 它非常耗时并且容易出现人为错误 想了解一下你们如何处理 print 是编码时删除还是最后删除 或者有一种方法可以自动删除它或者您不使用 print
  • AngularJS 中的 Rails 路由参数

    我正在尝试构建一个不使用 ngView 的 AngularJS Rails 多页面应用程序 基本上 我想在我的 Rails 应用程序中使用 Angular 的数据绑定和其他功能 同时仍然拥有由我的 Rails 路由确定的视图 到目前为止 它
  • 分别计算每列的不同值

    我可以计算每列的不同值而不枚举它们吗 假设我有一张桌子col1 col2 col3 并且没有其他列 在不明确提及这些列的情况下 我希望得到与以下相同的结果 SELECT count distinct col1 as col1 count d
  • 不同航线如何使用相同的护照策略?

    假设我有这样的代码 var api1 require api1 var api2 require api2 var app express app use api1 api1 app use api2 api2 这是 api1 模块的代码