如何使用PassportJs和Express后端在React上对用户进行身份验证

时间:2019-02-20 00:20:23

标签: reactjs express twitter passport.js

我有一个使用Node,Express和MongoDB构建的应用程序,我在其中使用ejs模板引擎在后端渲染所有内容。我正在用React重写前端。我的目标是使其成为SPA并使用后端作为api。大多数情况非常简单,因为我只是将我的/api路由代理到后端端口,然后使用json将数据返回给React。但是,我很难使认证工作。

我在Twitter策略中使用PassportJs。根据文档,登录路径应路由到/auth/twitter

app.get('/auth/twitter', passport.authenticate('twitter'));

后端处理身份验证,然后将用户重定向到指定的路由,如下所示:

app.get('/auth/twitter/callback',
  passport.authenticate('twitter', { successRedirect: '/',
                                     failureRedirect: '/login' }));

现在这是一个问题,因为我需要React才能知道用户是否已通过身份验证,并且我需要能够使用已身份验证的用户对api进行后续查询。 我在后端实现了session-store,可以使用户保持一定的登录时间。

有没有一种简单的解决方案可以让我重用所有后端代码?可能使用Fetch API将用户路由到/auth/twitter,并在promise中将用户和所需令牌作为json对象获取。如果不是这样,我将不胜感激一些建议,以指出正确的方向。我主要的困惑是,在后端,我只是通过重定向和渲染来处理所有事情,但由于客户端位于不同的端口(并且可能是生产中的服务器),因此不再选择重定向到服务器渲染的视图。

0 个答案:

没有答案