3

したがって、私が知る限り、express-sessionのドキュメントに従ってセッションを設定しました。しかし、私のクッキーは作成されていません! ドキュメントによると、request.session の値を設定するだけで、Cookie が自動的に設定されます。ブードゥーがこれを可能にしているのかはわかりませんが、魔法が壊れているようです. ここで与えられた例に対して確認したことを確認してください。私が間違っている?これらにはいくつかの重要な情報がありませんか?

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

   //... get the row from DB, check the pass then set session

   this.bcrypt.compare(password, row.hashed, function(err, passwordsMatch) {
            if( passwordsMatch === true)
            {
                //set the session variable 'user'
                req.session.user = row;
                res.send(row);
            }
        });

それで、私は何か間違ったことをしているのだろうか、それとも最新のものにバグがあるのでしょうか? データベースを確認すると、セッション テーブルの行に正しいセッション変数が表示されます。

//Here's my "configuration" of express-session. 
app.use(function (req, res, next) {
    res.header('Access-Control-Allow-Credentials', 'true');
    next();
});

var storeOptions = {
  //my database options (this works, it makes rows in db table)
};

var sessionStore = new SessionStore( storeOptions );

app.use(session({
    name:'yay_session',
    secret: 'some secret this is now',
    resave: true,
    saveUninitialized: false,
    cookie: { maxAge: 600000,httpOnly: false, domain:'localhost' },
    store: sessionStore
}));

クライアント側の Cookie が設定されないのはなぜですか? リソースのデバッグ パネルには表示されません。そのため、最新の 4.13.3 バージョンが Express-Session 1.11.3 と連携して動作することにバグがあるかどうか疑問に思っています。これは8月27日現在の最新のものです。

4

2 に答える 2

1

EXPRESS JS V 4 でセッションが正常に動作するようにするには、次のコードを使用します。

    var express = require('express');
    var session = require("express-session");
    var cookieParser = require('cookie-parser');
    var app = express();
    app.use(cookieParser());
    var MemoryStore =session.MemoryStore;
    app.use(session({
        name : 'app.sid',
        secret: "1234567890QWERTY",
        resave: true,
        store: new MemoryStore(),
        saveUninitialized: true
}));
于 2016-06-09T19:08:13.967 に答える