我有一个使用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对象获取。如果不是这样,我将不胜感激一些建议,以指出正确的方向。我主要的困惑是,在后端,我只是通过重定向和渲染来处理所有事情,但由于客户端位于不同的端口(并且可能是生产中的服务器),因此不再选择重定向到服务器渲染的视图。