16

/loginログイン情報を に投稿するログイン フォームがあります/checklogin/login資格情報が正しくない場合は、「ユーザー名またはパスワードが正しくありません」という行に沿ってエラー メッセージを表示して、ユーザーを にリダイレクトしたいと考えています。res.redirectただし、を使用するようにオプションを渡す方法がわかりませんres.render

これを行う最善の方法は何ですか?これについての以前の質問を見ましたが、Express の新しいバージョンでは機能しないようです。

4

2 に答える 2

23

リダイレクトだけでは、クエリ文字列以外でオプションを渡すことは実際には不可能です。

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 以降で引き続き使用できます。

于 2013-11-05T20:40:50.120 に答える