node.js - 使用 NodeJS 和 Restify 重定向客户端

标签 node.js restify passport.js

我正在使用 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();
});

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

最佳答案

Restify 的响应界面 now has a redirect method .

在撰写本文时,有一个测试显示如何使用它 here .

该测试的内容是:

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

许多使用 Restify 的人更熟悉 ExpressJS。重要的是要了解(在撰写本文时)影响 Express 插件移植的三个主要公共(public) API 差异之一是 Restify 中的 res.redirect 方法要求您通过 next (或 an InternalError is thrown )。我亲自将几个模块从 Express 移植到 Restify,最初的主要 API 差异是(在 Restify 中):

  • server.use 仅适用于路径和与 HTTP 方法无关的中间件
  • res.redirect 要求您通过 next
  • 有些成员或 Request 接口(interface)是方法而不是值,例如 req.pathreq.path 是 Restify 中 req.getPath 的别名

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

关于node.js - 使用 NodeJS 和 Restify 重定向客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613953/

相关文章:

node.js - TypeError : req. flash 不是函数

node.js - PassportJS - 可以在没有数据库的情况下使用本地策略吗?

angularjs - 如何从 Angular cli 调用 Passportjs(node) API?

node.js - karma : Error during loading "karma-phantomjs-launcher" plugin

javascript - 如何使用 Q 链接嵌套的 Promise?我无法让它们按正确的顺序运行

javascript - 如何使用 Node JS 驱动程序创建新的 MongoDb 数据库

javascript - "Invalid regular expression: unterminated group"尝试设置 restify 静态路由时

javascript - 如何将值从 Node.js 服务器传递到 HTML 页面内嵌入的 Javascript 代码?

rest - 通过 GET 请求在 BODY 中传递参数

node.js - 在 restify 中不调用 next() 的后果