ノード・バックエンドからリアクション・フロントエンドにセッションを渡す際に問題が発生していると思われますが、わかりません。状況がわからない。誰も助けることができますか?リア・フロントエンドとノード・バックエンド間の認証
は、ここで問題です:
私はバックエンドでこのルートを持っている...成功したスチーム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' })
() '私はルート上に呼んでいるこの関数の内部でfalseを返す' req.isAuthenticated判明: '関数ensureAuthenticated(reqは、RES、次の){ 場合(req.isAuthenticated()){ return next(); } res.redirect( '/'); } ' 応答は、この機能からルートにルーティングされるHTMLです。 ensureAuthenticatedにnext()だけを返すように指示すると、少なくともテストルート上でJSONが吐き出されます。 ここからどこへ行くか不明です。 –