2
저는 Couch 및 Redis와 함께 Express 응용 프로그램을 로컬로 구축했습니다. 그것은 잘 작동하고 있습니다.Express 'Connect-Redis를 사용하여 원격 Redis 서버에 세션 저장
이제 Iris Redis에서 호스팅되는 원격 Redis 서버를 사용하려고합니다. 나는 며칠 째 시도했지만 Express의 'Connect-redis'를 통해 Passport의 로컬 전략으로 인증 한 후 쿠키를 반환하는 것처럼 보이지 않습니다. 그러나 로컬 Redis 서버가 실행 중일 때도 정상적으로 작동합니다.
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use('/upload', upload.fileHandler());
app.use(express.bodyParser({ keepExtensions: true, uploadDir: 'public/uploads' }));
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ cookie: { maxAge: 60000000 }, secret: "sauce", store: new RedisStore({
port: 6379,
host: 'url',
pass: 'sauce'
}) }));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
// Authentication
passport.use(new LocalStrategy(function(username, password, done) {
username = username.toLowerCase();
db.get(username, function (err, doc) {
if (err) {
console.log(err);
return done(err);
}
if (!doc) {
return done(null, false, { message: 'No user by that name.' });
}
if (doc.password !== password) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, doc);
});
})
);
passport.serializeUser(function (user, done) {
done(null, user._id);
});
passport.deserializeUser(function (userId, done) {
db.get(userId, function(err, user){
if(err){
return (500, err);
} else {
done(null, _.omit(user, ["password"]));
}
});
});
// Route
exports.authenticate = passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/login'
});