React前端和Node后端之间的身份验证

时间:2017-09-16 03:27:15

标签: json node.js reactjs express passport.js

我认为我有一个问题从我的Node后端传递到我的React前端,但是我有点不知道我不知道什么情况。有人可以帮忙吗?

问题在于:

我在后端有这条路线..

app.get('/account', ensureAuthenticated, function(req, res){
res.status(200).json({ user: req.user });
});

在成功的Steam Passport身份验证时吐出userdata JSON。当我查看由EJS视图生成的帐户页面时,我可以验证这是否有效。

在React服务器上,我有一个带有Steam auth链接的根页面。它成功进入Steam,然后重定向回到根页面。

当我尝试从根React页面对'/ account'进行JSON提取时,响应不再是JSON,而是来自后端'/ account'模板的HTML,但我当然需要JSON。

我认为它并不认可我是经过身份验证的,因为我在使用Chrome的高级REST客户端扩展程序执行GET请求时会得到相同的HTML响应。 我还应该注意,我通过Create React App的代理功能代理API服务器。

更新:问题解决了。

fetch('https://example.com:1234/users', { credentials: 'include' })

1 个答案:

答案 0 :(得分:0)

听起来问题可能是由于app.get调用的顺序或节点服务器的配置 - 可能是EJS模板。

我会寻找你在app.set('view engine', 'ejs');之类的地方以及你正在做app.get('/account'...的地方。

您希望在执行app.get('/account'.. 之前app.set('view engine... /account

如果你真的点击401路线,你应该得到{{1}}或JSON回复,而不是HTML(EJS)。