15

このトピックNode.js + express.js + Passport.js : サーバーの再起動間で認証を維持するを読みましたが、まったく同じことが必要ですが、Redis の場合です。私はそのようなコードを使用しました:

var RedisStore = require('connect-redis')(express);
app.use(express.session({
    secret: "my secret",
    store: new RedisStore,
        cookie: { secure: true, maxAge:86400000 }
}));

そして、それは機能しません。Redis を接続するには、connect-redis モジュールを使用します。私が間違っていることは何ですか?ありがとう!

UPD : エラーは発生しません。認証プロセスを確実に成功させるために、ログ行を追加して実行しました。

function(email, password, done) {
    // asynchronous verification, for effect...
    process.nextTick(function() {
        findByEmail(email, function(err, user) {
            if (!user) {
                return done(null, false, {
                    message: 'Unknown user ' + email
                });
            }
            if (user.password != password) {
                return done(null, false, {
                    message: 'Invalid password'
                });
            }
            //just logging that eveything seems fine
            console.log("STATUS: User " + email + " authentificated succesfully");
            return done(null, user);
        })
    });
}));

express.logger() を有効にしたログは次のとおりです。

127.0.0.1 - - [Fri, 19 Oct 2012 05:49:09 GMT] "GET /ico/favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"
STATUS: User admin authentificated succesfully

auth/users/credentials/serializing/deserializing 自体に問題はないと思います。問題は、パスポートがCookieをRedisに設定して読み取ることができないことです。

4

3 に答える 3

6

私は使うべきです

cookie: { secure: false, maxAge:86400000 }
于 2012-10-19T16:43:05.807 に答える
0

ストアを明示的に設定するとどうなりますか? つまり、アプリの次の行に沿った何か:

var redis = require('redis');
// This is host and port-dependent, obviously
var redisClient= redis.createClient(6379, 'localhost');

app.use(express.session({
    secret: 'your secret',
    /* set up your cookie how you want */
    cookie: { maxAge: ... },
    store: new (require('express-sessions'))({
        storage: 'redis',
        instance: redisClient
    })
}));
于 2014-10-21T12:45:00.243 に答える