2014-05-12 116 views
0

我正在開發node和express。我正試圖記住我登錄。我在網上閱讀了很多東西,但無法使其工作。我不知道是否有接收器,如果有,我找不到它。node + express + redis持久會話/記得我

我正在嘗試使用redis和快速會話。並正在部分工作。 如果重新啓動節點服務器,或者關閉並重新打開chrome。會話正在進行中。因此進入「/」會將我重定向到「/index.html」。

但是,如果我重新啓動電腦,我失去了會議。所以goning成「/」將重定向我從我的服務器到「登錄」 這裏是一些顯著代碼:

var redisClient = require('redis').createClient(); 
var RedisStore = require('connect-redis')(express); 
app.use(bodyParser()); 
app.use(cookieParser()); 
app.use(express.session({ 
    store: new RedisStore({ 
    host: 'localhost', 
    port: 6379, 
    db: 0, 
    cookie: { maxAge: (24*3600*1000*30)}, // 30 Days in ms 
    client : redisClient 
    }), 
    secret: 'seeeecret' 
})); 

app.get('/', function(req, res, next) { 
    res.redirect('/index.html'); 
}); 

app.post('/login', function(req, res) { 
    function loginSuccess() { 
     req.session.regenerate(function() { 
      req.session.user = req.body.usuario;    
     res.sendfile('index.html', {root: './static'}); 
     }); 
    } 
    function loginFailure(errText, errCode) { 
     console.log("failed to login. "+errCode+": "+errText); 
     res.redirect('/login'); 
    } 
    //Imap email login (the user will authenticate with his email, end email's pass) 
    checkPassword(req.body.usuario, req.body.server, req.body.password, loginSuccess, loginFailure); 
}); 

function restrict(req, res, next) { 
    if (req.session.user) { 
     next(); 
    } else { 
     req.session.error = 'Access denied!'; 
     res.redirect('/login'); 
    } 
} 
+0

是你確定你的redis服務器設置爲將數據保存到磁盤? – mscdex

+0

mmm差不多..我安裝followin oficial doc。據我所知,它堅持數據。因爲這是(或不) – GonzaloA

回答

0

看來,你在錯誤的地方「曲奇」:

app.use(express.session({ 
    cookie: { maxAge: (24*3600*1000*30)}, // <-- where it belongs 
    store: new RedisStore({ 
    host: 'localhost', 
    port: 6379, 
    db: 0, 
    client : redisClient 
    }), 
    secret: 'seeeecret' 
}));