[英]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.