2013-03-22 2 views
3

지금까지 Express 세션에 기본 MemoryStore를 사용했습니다. 재시작 사이에 모든 세션 데이터가 손실된다는 것을 제외하면 모든 것이 잘 작동했습니다. 그래서 내 세션을 Redis & Connect-Redis로 작업하려고합니다. 나는이 응용 프로그램을 실행할 때Express + Passport + Redis 세션?

var express = require("express"), 
    app = module.exports = express(), 
    passport = require("./passport"), 
    http = require("http"), 
    RedisStore = require("connect-redis")(express), 
    redis = require("redis").createClient(); 

app.configure(function(){ 

    app.set("passport", passport); 
    app.use(express.cookieParser()); 
    app.use(express.session({ 
     secret: "I can haz working sessions?", 
     store: new RedisStore({ client: redis }) 
    })); 
    app.use(passport.initialize()); 
    app.use(passport.session()); 
    ... 

, 오류가없는 : 여기

은 레디 스와 세션 설정에 관한 내 코드의 일부이다. 그러나 로그인을 시도 할 때 초기 로그인을 수행하지만 로그인 화면으로 되돌아 간다. 그것은 마치 여권이 쿠키를 설정할 수 없거나 설정된 후에 쿠키를 읽을 수없는 것과 같습니다.

passport.serializeUser(function(user, done) { 
    done(null, { 
     id : user.id, 
     type : user.type, 
     firstname: user.firstname, 
     lastname: user.lastname 
    }); 
}); 

passport.deserializeUser(function(user, done) { 
    done(null, user); 
}); 

내가 잘못 가고 위치에 대한 조언 :

참고로, 여기에 내가 직렬화 여권에 사용하는 기능은/세션을 역 직렬화? redis로 작업하려면 여권 serializeUser/deserializeUser를 수정해야합니까? 아니면 다른 것을 놓치고 있습니까?

귀하의 도움에 미리 감사드립니다.

+1

브라우저의 개발 도구를 확인하여 쿠키가 실제로 설정되었는지 확인하고 브라우저에서 서버로 다시 전송하는지 확인하십시오. 귀하의 코드는 괜찮아 보인다. – robertklep

+0

쿠키 세션과 동일한 문제가 발생합니다. http://stackoverflow.com/questions/19011531/using-cookiesession-with-passport –

+0

@ user1031947 : 문제를 해결할 수 있었습니까? 업데이트하십시오. – moaglee

답변

0

가능성 : 아마도 앱이 Redis에 연결할 수 없습니까? 나는 redis-server가 실행되고 있지 않을 때, 당신이 묘사 한 증상 (조용히 쿠키를 설정하지 못함)을 경험했다.

노드 서버가 실행 중인지 확인하는 것 이외에도 노드 서버가 실제로 노드 서버에 연결될 수 있는지 확인하십시오. 즉, 방화벽 규칙이 사용자를 보호하지 못하게하십시오.

행운을 빈다.

관련 문제