使用 NodeJS 和 Restify 重定向客户端

2024-04-23

我正在使用 NodeJS、Restify 和 PassportJS 为 SPA 构建 REST 后端以进行身份​​验证。除了最后一步之外,一切正常,即将客户端从后端 /login/facebook/callback 重定向到应用程序的主页。

我在网上搜索并找到了很多关于 ExpressJS 的答案,但还没有找到对 Node-Restify 有用的答案。我已经成功地获取了一些代码片段,这就是我目前正在尝试的:

app.get('/api/v1/login/facebook/cb', passport.authenticate('facebook', { scope: 'email' }), function(req, res) {
    req.session.user = req.user._id;
    res.header('Location', '/#/home');
    res.send();
});

响应已发送,但不包含位置标头,并且向客户端显示白屏。如何使用 Node-Restify API 进行正确的重定向?


Restify 的 Response 接口现在有一个redirect method https://github.com/restify/node-restify/blob/958ed9cf974ea2c7b8453a407c624a76c5971725/test/response.test.js#L79.

在撰写本文时,有一个测试展示了如何使用它here https://github.com/restify/node-restify/blob/958ed9cf974ea2c7b8453a407c624a76c5971725/test/response.test.js#L79.

该测试的内容是:

server.get('/1', function (req, res, next) {
    res.redirect('https://www.foo.com', next);
});

许多使用 Restify 的人都更熟悉 ExpressJS。重要的是要理解(同样,截至撰写本文时)影响 Express 插件移植的三个主要公共 API 差异之一是res.redirectRestify 中的方法要求您通过next (or 抛出一个内部错误 https://github.com/restify/node-restify/blob/958ed9cf974ea2c7b8453a407c624a76c5971725/test/response.test.js#L282)。我亲自将几个模块从 Express 移植到 Restify,主要的 API 差异首先是(在 Restify 中):

  • server.use仅适用于路径和 HTTP 方法不可知的中间件
  • res.redirect要求你通过next
  • 有些成员或Request接口是方法而不是值,例如req.path. req.path是一个别名req.getPath在恢复

I am NOT说它们在本质上是相似的,但以上三件事是移植 Express 插件的主要障碍。根据我在大型企业应用程序和个人项目中使用 Restify 的经验,在幕后,Restify 比 Express 有许多优势。

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

使用 NodeJS 和 Restify 重定向客户端 的相关文章

随机推荐

  • 并行解析器存在哪些概念或算法?

    对于已经以分割格式给出的大量输入数据 并行化解析器似乎很容易 例如单个数据库条目的大列表 或者很容易通过快速预处理步骤进行分割 例如解析大型文本中句子的语法结构 并行解析似乎有点困难 它已经需要相当多的努力来定位给定输入中的子结构 通用编程
  • Android Spinner 尺寸非常大

    我正在尝试获得像我的应用程序中那样的 ICS 旋转器 并玩了几个小时 最后我使用 HoloEverywhere 来获得它 并且它正在工作 但我有一个设计问题 即旋转器没有包装其我在 xml 中设置的内容 默认情况下如下所示 实际上 我在谷歌
  • Xamarin Android - 如何重建 Resource.designer.cs

    在 Xamarin Android 中 如何重新生成 Resource designer cs 我尝试将所有 XML 文件的构建操作标记为 AndroidResource 但 Resource designer cs 仍然不会使用新值进行更
  • 使用 Clapprjs 在网页上流式传输 .m3u8

    我使用 nginx rtmp 将 rtmp 转换为 hls 并使用 Clappr 在网页中进行流式传输 但 Clappr 采用旧的 ts 段 导致 404 错误 因为它在服务器上被删除 如何解决这个问题 抱歉 这是我第一次使用 nginx
  • 如何禁用 nuget 机器范围的缓存?

    如您所知 NuGet 使用 LOCALAPPDATA NuGet Cache 位置进行缓存 它首先检查请求的包是否在这里 然后根据需要进行下载 如何从 Nuget 和 Visual Studio 2013 正确禁用此缓存机制 并确保它们始终
  • “私有构造函数捕获”习语的 Java 示例是什么?

    有人可以向我解释一下吗私有构造函数捕获习惯用法举例说明哪些地方我们实际上需要 不需要这种设计 目的是在施工过程中获取临时价值 解决方案 53 中给出了一个示例Java 谜题 http www amazon co uk JavaTM Puzz
  • 从 Selenium IDE 将测试导出为 python

    我在 Selenium IDE 中进行了几次测试 并将其保存为 HTML 格式的测试套件 该测试套件可以很好地导入回 selenium IDE 但是现在我想使用 python 扩展这些测试 当我单击导出测试套件并选择 python 时 我收
  • 使对象不可调用

    在 JavaScript 中 函数是可调用的 我可以从函数中删除此属性 只留下普通对象吗 var foo function foo callable false pseudocode foo foo is not a function 我可
  • Spring Integration 将路径变量和帖子主体结合到有效负载表达式中

    使用 http 入站网关 我可以使用 SPEL 指定有效负载表达式 该表达式将访问 header requestParams 和 pathVariables 如何同时包含 POST 中的正文 我目前拥有的一个例子是
  • 将 tar.gz 转换为 zip

    我的 Ubuntu 网络服务器上有大量 gzip 压缩档案 我需要将它们转换为 zip 我认为这可以通过脚本来完成 但是我应该使用什么语言 以及如何解压缩和重新压缩文件 我会用一个bash 1 单行 for f in tar gz do r
  • 任务编辑文档预览组件Alfresco

    第一个问题 我想以工作流程任务编辑的形式实现文档预览 我该怎么做 我尝试去适应document details xml and document details ftl to workflow details xml and workflo
  • R 中按值传递

    当尝试调用 grid arrange 将多个图放在同一个 ggplot2 图上时 我首先构建一个我想要的图的列表 然后我构建相应的参数列表来调用 grid arrange 如所解释的在上一个问题中 https stackoverflow c
  • 使用登录名签出 svn+ssh

    我想从存储库中签出一些内容 但是我输入 svn co svn ssh URL 我被要求输入密码 我想他使用的用户名来自我的控制台 但两者不一样 那么我如何使用不同的登录名使用 svn ssh 签出某些内容呢 SSH 允许您在连接 URL 中
  • 通过python从netCDF中提取特定位置的数据

    我是 Python 的新手 也是 NetCDF 的新手 如果我不清楚 请道歉 我有一个包含多个变量的 nc 文件 我需要以新的顺序从这些 nc 文件中提取数据 我的 nc 文件有 8 个变量 经度 纬度 时间 u10 v10 swh mwd
  • 如何“安装”Action Bar Sherlock?

    我正在尝试使用 Action Bar Sherlock 构建示例项目 Action Bar Styled 我在这里下载包含 ABS 的 zip 文件http actionbarsherlock com http actionbarsherl
  • ReactJS onclick 添加或删除类到另一个元素

    我正在努力将我的普通 jQuery 代码转换为 React JS 我是 React 新手 我有以下代码 add click function nav addClass show remove click function nav remov
  • 如何将单个部分中的 Sphinx 章节分成不同的文件?

    我正在使用出色的 Sphinx 工具来创建一些文档 并且我试图通过将同一部分的章节分成单独的文件来保持代码库的模块化形式 请参阅此处了解 章节 和 部分 的定义 http www sphinx doc org en stable rest
  • Homestead 给出 404 Not Found

    我正在尝试启动并运行 Homestead 2 0 以用于 Laravel 的本地开发 我跟着Laracast https laracasts com lessons say hello to laravel homestead two 但我
  • 画布已被跨源数据本地图像污染

    这个问题已经被问了很多次 但我只是不明白为什么这种情况会发生在我身上 基本上 我有一个画布和一个图像 当我尝试这样做时 var canvas document getElementById somecanvas var ctx canvas
  • 使用 NodeJS 和 Restify 重定向客户端

    我正在使用 NodeJS Restify 和 PassportJS 为 SPA 构建 REST 后端以进行身份 验证 除了最后一步之外 一切正常 即将客户端从后端 login facebook callback 重定向到应用程序的主页 我在