【问题标题】:Pass Express req and res data to client using Reactjs使用 Reactjs 将 Express req 和 res 数据传递给客户端
【发布时间】:2015-07-08 15:53:18
【问题描述】:

我正在使用带有客户端路由的 ReactJS,并尝试使用 Passport 实现 Facebook 登录。一切都很好,除了我不确定如何将我生成的 req.user 传递给我的 React 组件,因为我没有使用 Handlebars 或 Jade。这可能吗?

更新

这是我正在使用的当前代码:

app.use('/', express.static(__dirname + '/public'), function(req, res){
  if (req.user){
    res.send(req.user);
  }
});

app.get('/facebook', passport.authenticate('facebook', { scope : 'email' }));

// handle the callback after facebook has authenticated the user
app.get('/facebook/callback',
    passport.authenticate('facebook', {
      successRedirect : '/'
}));

我不知道该怎么做是在我的客户端 React 组件中访问 req.user(我通过与 Flux 的会话存储身份验证和用户信息),因为任何文档都显示通过 Jade 加载它或 Handlebars 模板,我都没有使用。有什么想法吗?

【问题讨论】:

  • 你能发布你的代码并向我们展示你到目前为止所做的尝试吗?
  • 我添加了我的 Express 路线和一些额外的信息,这样你就可以看到我想要做什么。
  • 您需要从 Flux 向您的 express 应用程序中定义的路由进行 ajax 调用,该路由返回 req.user 以及您想要的任何其他 JSON。您的 ajax 回调解析 json 并将数据提取到您的反应应用程序中。
  • 你能成功登录吗?如果是这样,即使我遇到同样的问题,你也可以分享代码

标签: javascript node.js express reactjs


【解决方案1】:

您为什么要将整个 req.user 公开给客户端?使用会话的想法是从客户端完全删除该数据,因为客户端始终被假定为不安全的主机。因此,用户数据和会话之间的映射是通过客户端安装的cookies的sessionId完成的。

过去,我需要客户端在登录后知道其用户名,但没有别的。我通过在客户端中放置一个具有该值的 cookie 解决了这个问题。这对您来说是一种可行的方法吗?也就是说,选择客户端需要知道的数据(而不是传递整个用户对象)并将其放入 cookie 本身?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2013-01-30
    • 2017-09-11
    • 1970-01-01
    • 2013-09-03
    相关资源
    最近更新 更多