簡體   English   中英

如何清理Nodejs中的所有會話(heroku + redis)?

[英]How to clean all sessions in Nodejs (heroku + redis)?

我使用的是托管在的NodeJS(expressjs) 的Heroku

會話存儲在redis中( Herist的Redistogo插件):

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

我需要重新啟動服務器並清理所有會話:注銷所有用戶以強制他們再次登錄。 我該怎么做? 重新啟動redis插件沒有幫助。

如果你最終在redis中存儲其他東西,redis.flushdb()可能有點極端。 您只需要刪除所有“sess:*”鍵。 不幸的是,沒有del *,所以你可以使用這樣的東西:

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

清除所有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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM