0

Express フレームワークで Node.js を使用するアプリケーションに取り組んでおり、ユーザー認証に Passport を使用し、ストレージに MongoDB を使用しています。どのユーザーがログインしようとしても、ログインしたユーザーがデータベースの最初のユーザー、つまり最初にサインアップしたユーザーであるとサーバーが判断する理由がわかりません。

サーバーは、/login への POST 要求を受信すると、passport.authenticate を実行してユーザーの資格情報を認証します。コンソールにログアウトすると、適切なユーザー資格情報が渡され、セッション ID も正しいことは明らかですが、req.user が設定されている場所では、間違ったユーザーに設定されています。

これは、何が起こっているかを示すコンソールのログです。

get /user
--req.user is { salt: '$2a$10$NgPcBpvUqGq32IoWvsChd.',
  hash: '$2a$10$NgPcBpvUqGq32IoWvsChd.SYva2e/aaPsfUcdN65aRm/D1oYJB3Ty',
  username: 'daniel',
  email: 'dan@dan.com',
  _id: 515decd49fc3204ca1000001,
  __v: 0,
  songs: [] }
--req.session is { cookie:
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true },
  passport: { user: '515decdc9fc3204ca1000002' },
  flash: {} }

ご覧のとおり、ユーザー ID は req.sessions では正しいのですが、req.user では正しくありません。

完全なコードはこちらから入手できます: https://github.com/patrickmestabrook/song-swap

4

1 に答える 1