0
    var express = require('express');
    var app = express();
        app.use(express.cookieParser('keyboard 123'));

app.get('/', function(req, res){
  res.sendfile('./login.html');
});

        app.use(express.session());

            app.post('/login', function(req, res){

            console.log(req.body);
            if (req.session.user) {
                req.session.user=req.body.username;
              } else {
                req.session.user="test";

              }

        });




<form id="myform" action="/login" method="post" enctype="application/x-www-form-urlencoded">
  <input type="text" name="username" id="mytext" />
  <input type="submit" id="mysubmit" />
</form>

Express Node js を理解し、使用しようとしています。ここに投稿するフォームがあります。私の理解は次のとおりです。初めて使用できるCookie(セッション)がありません。したがって、リクエストを受け取ると、 req.session.user は空になります。だから私たちは 200 OK を送信します。この req.session.user Cookie が作成され、ローカル ブラウザーに保存されます。その後、すべてのreqでこのreq.sessionオブジェクトが送信されますが、それは正しいですか?

今の問題は次のとおりです。私は常に req.body.username を未定義として取得します。ログインページに同じユーザー名が定義されています。console.log(req.body) を試しましたが、常に未定義です。セッションがない場合は、ボディ部分が機能します。

私が理解していることが正しいかどうか、そしてこのコードの問題は何かを明確にしてもらえますか。セッションの概念とエクスプレスフレームワークでの使用方法を理解するのに本当に問題があります

4

1 に答える 1

1

リクエストとレスポンスを混同しているようです。より大きなコードの抜粋を投稿すると、より詳細なヘルプを提供できますが、これがあなたの誤解についての私の見解です。

  • POST / loginが到着したら、req.session.userが設定されているかどうかを確認できます。その場合、ユーザーはすでにログインしていますが、再度ログインします。これは通常のケースではありませんが、次のようなことができます。res.send('You are already logged in as ' + req.session.user);
  • が設定されていない場合req.session.user、ユーザーはログインしています。通常、ユーザーが正しいパスワードを知っていることを確認しますが、小さなテストアプリの場合は、そのまま実行req.session.user = req.body.usernameし、 `res.send('としてログインしています。 '+ req.session.user); 例えば。

また、cookieParser、session、およびbodyParserミドルウェアがアプリケーションで適切に構成されていることを確認してください。

于 2012-12-25T01:49:54.830 に答える