我正在使用 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.path
。req.path
是 Restify 中req.getPath
的别名
我不说它们在底层是相似的,但以上三件事是移植 Express 插件的主要障碍。根据我在大型企业应用程序和个人项目中使用它的经验,Restify 比 Express 有很多优势。
关于node.js - 使用 NodeJS 和 Restify 重定向客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613953/