2017-09-16 20 views
0

ノード・バックエンドからリアクション・フロントエンドにセッ​​ションを渡す際に問題が発生していると思われますが、わかりません。状況がわからない。誰も助けることができますか?リア・フロントエンドとノード・バックエンド間の認証

は、ここで問題です:

私はバックエンドでこのルートを持っている...成功したスチームPassport認証時にユーザデータJSONを吐き出す

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

。 EJSビューで生成されたアカウントページをチェックすると、これが動作することを確認できます。

Reactサーバーでは、Steam authへのリンクを持つルートページがあります。それはスチームに成功し、ルートページにリダイレクトされます。

Reactのルートページから '/ account'にJSONフェッチを実行しようとすると、レスポンスは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'...です。あなたがやりたいだろう

あなたが実際にあなたが取得する必要/accountルートを打つ場合は、app.set('view engine...

行うapp.get('/account'..前に、どちらか401またはJSONレスポンスではなく、HTML(EJS)。

+0

() '私はルート上に呼んでいるこの関数の内部でfalseを返す' req.isAuthenticated判明: '関数ensureAuthenticated(reqは、RES、次の){ 場合(req.isAuthenticated()){ return next(); } res.redirect( '/'); } ' 応答は、この機能からルートにルーティングされるHTMLです。 ensureAuthenticatedにnext()だけを返すように指示すると、少なくともテストルート上でJSONが吐き出されます。 ここからどこへ行くか不明です。 –

関連する問題