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