2017-09-16 110 views
0

我想我有一個問題將會話從Node後端傳遞到我的React前端,但我實際上是一種我不知道我不知道的情況。誰能幫忙?React前端和Node後端之間的身份驗證

這裏的問題:

我有在後端這條路線..

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

其在成功蒸汽Passport身份驗證吐出用戶數據JSON。當我檢查由EJS視圖生成的帳戶頁面時,我可以驗證此作品。

在React服務器上,我有一個帶有Steam驗證鏈接的根頁面。它成功進入Steam,然後重定向回根頁面。

當我嘗試從根React頁面向JSON提取'/ account'時,響應不再是JSON,而是來自後端'/ account'模板的HTML,但我當然需要JSON。

我認爲它不認可我爲已認證,因爲使用Chrome的高級REST客戶端擴展進行GET請求時,我得到的HTML響應相同。 我還應該注意到,我通過Create React App的代理功能代理API服務器。

更新:問題已解決。

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

回答

0

這聽起來像問題可能是由於app.get呼叫,否則節點服務器的配置順序 - 可能是EJS模板。

我會尋找你在做什麼的地方,比如app.set('view engine', 'ejs');以及你在做什麼app.get('/account'...

你會想要做的你做app.set('view engine...

app.get('/account'..之前如果你確實擊中了/account路線,你應該得到無論是401或JSON響應,而不是HTML(EJS)。

+0

原來'req.isAuthenticated()'將返回這個功能我打電話路線上的錯誤裏面:如果 '函數ensureAuthenticated(REQ,水庫,旁邊){ (req.isAuthenticated()){ return next(); } res.redirect('/'); }' 響應是HTML從此函數被路由到根目錄。 如果我告訴ensureAuthenticated返回next(),它至少會在測試路由上吐出一些JSON。 不確定從哪裏去。 –

相關問題