Serialize と Deserialize を実装しますか?
RedisStore は、Express を使用して私のセッション ストアとしてセットアップされます。これは、シリアライズとデシリアライズを実装していないということですか? それは自動的に起こりますか?
これらのメソッドを実装しないと、次の Express エラーが発生します - 500 エラー: ユーザーをセッションにシリアル化できませんでした。それらを実装するとき、デシリアライズに何を入れればよいかわかりません。
以下のコードは機能しているように見えますが、セッションが持続していません。サイトにアクセスするたびにログインする必要があります。
NodeJS + Passport + RedisStore のどこかに良い例はありますか?
var sessionStore = new RedisStore({
host: rtg.hostname,
port: rtg.port,
db: redisAuth[0],
pass: redisAuth[1]
});
passport.use(new ForceDotComStrategy({
clientID: clientId,
clientSecret: clientSecret,
callbackURL: myurl
},
function(token, tokenSecret, profile, done) {
console.log(profile);
return done(null, profile);
}
));
appSecure.configure('production', function(){
appSecure.use(allowCrossDomain);
appSecure.use(express.cookieParser(expressSecret));
appSecure.use(express.bodyParser());
appSecure.use(express.methodOverride());
appSecure.set('port', port);
appSecure.use(express.session({ secret: expressSecret, store: sessionStore, key:'expressSid', cookie: { maxAge : 604800, domain:'.domain.com'}}));
appSecure.use(passport.initialize());
appSecure.use(passport.session());
appSecure.use(appSecure.router);
appSecure.use(express.static(__dirname + '/public'));
appSecure.use(express.errorHandler());
});
passport.serializeUser(function( user, done ) {
done( null, user.id);
});
passport.deserializeUser(function( user, done ) {
done( null, user );
});