1

expressjsセッションを使用してコードの何が問題になっているのか理解できません。

req.session.is_logged = trueルートを設定している/loginので、ルートを呼び出すF5キーを押す/sessionと、の値req.session.is_loggedがfalseになります。

ここにいくつかのコードがあります

var express = require("express");
var app = express();

app.configure(function(){
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({secret: 'test', store: express.session.MemoryStore({
        reapInterval: 60000 * 10
    })}));
});

app.get('/session', function(req, res){
        if (req.session.is_logged){
            console.log('|-->Session recognized');
            res.status(200);
            res.send({ response: "OK" });
        }else{
            console.log('|-->Any session recognized');
            res.status(403);
            res.send({ response: "KO" })
        };
});

app.get('/login', function(req, res){
    req.session.is_logged = true;
    res.status(200);
    res.send({ response: "OK" });       
});

app.listen(3000);

私はそれを行うためのいくつかの同様の方法を見ました、そしてそれはうまくいくようです...あなたの助けに感謝します!

Express v3.0.5

4

3 に答える 3

1

同一生成元ポリシーを尊重しない可能性があります。セッションシステムはCORSをサポートしていません。

コードは間違っていませんが、URLmydomain.comにアクセスしてノードサーバーにアクセスすると、mydomain.com:3000機能しません。

それを機能させるには多くの方法があり(Apacheプロキシリバース、NGINX ...)、いくつかの調査を行い、あなたのケースに最も適切なものを取ります。

于 2013-01-06T07:09:08.350 に答える
0

/loginルートでreq.session.is_logged=falseを設定しているので、どのようにtrueにすることができますか。

セッションにメモリストアを使用するより良い方法は

var MemoryStore = express.session.MemoryStore
,store = new MemoryStore();
app.use(express.session({ secret: 'something', store: store }));
于 2012-12-30T15:52:29.093 に答える
0

問題は、ログインルートで応答を送信していないため、クライアントがCookieを設定することを知らないことです。修正は、単に応答を送信することです。

app.get('/login', function(req, res){
    req.session.is_logged = true;            
    res.send('Ok!'); /* Now the 'Set-Cookie' HTTP header will be sent to the client. */
});

また、オブジェクトはグローバルオブジェクトではないためMemoryStore、の属性としてオブジェクトを正しく参照していることを確認してください。express.session

app.use(express.session({secret: 'test', store: express.session.MemoryStore({
    reapInterval: 60000 * 10
})}));
于 2012-12-31T01:52:44.760 に答える