我正在使用 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.redirect
Restify 中的方法要求您通过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(使用前将#替换为@)