リダイレクトだけでは、クエリ文字列以外でオプションを渡すことは実際には不可能です。
res.redirect('/login?e=' + encodeURIComponent('Incorrect username or password'));
リダイレクトは、クライアントに新しいリクエストを開始するように指示し、HTTP は独自にステートレスになります。
それ以外の方法でメッセージを保持するには、次のリクエストのためにメッセージを保持するための形式の永続性が必要です (Cookie、セッションなど)。
req.session.error = 'Incorrect username or password';
res.redirect('/login');
それで:
res.render('login', { error: req.session.error });
delete res.session.error; // remove from further requests
これは、Express 2req.flash()
が達成に役立ったことでもあります。そして、それの変種は、バンドルさconnect-flash
れるのではなく、Express 3 以降で引き続き使用できます。