2013-02-05 40 views
5

मैं heroku पर होस्ट किए गए नोडजेज़ (एक्सप्रेसजेएस) का उपयोग कर रहा हूं। (Heroku के लिए Redistogo प्लगइन)नोडजेस (heroku + redis) में सभी सत्रों को कैसे साफ़ करें?

सत्र redis में जमा हो जाती:

RedisStore = require('connect-redis')(express) 
app.use express.session 
     secret: process.env.CLIENT_SECRET 
     cookie: { maxAge: 604800000 } 
     store: new RedisStore {client: redis} 

उपयोगकर्ता के बाद लॉग इन में मैं req.session में अपनी जानकारी को संगृहीत

after_user_logged_id = (req, user)->  
    req.session.current_user = 
    id: user._id 
    name: user.name 

मैं सभी सर्वर और स्वच्छ फिर से शुरू करनी सत्र: सभी उपयोगकर्ताओं को लॉग इन करने के लिए उन्हें एक और बार लॉग इन करने के लिए लॉगआउट करें। मुझे यह कैसे करना चाहिए ? रेडिस प्लगइन को पुनरारंभ करना मदद नहीं करता है।

+1

आप इसे कोड में स्वयं लागू कर सकते हैं। अगर आपको भविष्य में सत्र में कुछ अपग्रेड/बदलना है, तो एक अच्छी सुविधा हो सकती है। मेरा सुझाव है कि आप कुछ संपत्ति के अस्तित्व की जांच करते हैं, और अन्यथा सत्र को नष्ट कर देते हैं, जिससे उपयोगकर्ता लॉग इन करने के लिए मजबूर होता है, जिस बिंदु पर आप संपत्ति सेट करते हैं। कुछ ऐसा: 'अगर (session.version <1) {session.destroy()} '। –

+0

क्या मुझे इसे app.configure() -> app.use (req, res, next) -> session_logic में रखना चाहिए? –

+1

हां, आप इसे वहां डाल सकते हैं, और आप शायद अपने लॉगिन पेज पर 'res.redirect()' भी चाहते हैं। –

उत्तर

6

redis.flushdb() थोड़ा चरम यदि आप redis में कुछ और भंडारण के अंत हो सकता है। आपको बस "sess: *" कुंजी को हटाने की जरूरत है। दुर्भाग्यवश, कोई डेल * नहीं है, इसलिए आप इस तरह कुछ उपयोग कर सकते हैं:

redis.keys("sess:*", function(err, key) { 
    redis.del(key, function(err) { 
    }); 
}); 
0

कोड सभी redis सत्र साफ करने के लिए:

RedisStore = require('connect-redis')(express) 
rtg = require('url').parse process.env.REDISTOGO_URL 
redis = require('redis').createClient rtg.port, rtg.hostname 
redis.auth rtg.auth.split(':')[1] # auth 1st part is username and 2nd is password separated by ":" 
    try 
    console.log "clean sessions" 
    redis.flushdb() 
    catch err 
    console.log "error:", err