I'm using nodejs (expressjs) hosted on heroku.
Sessions are stored in redis (Redistogo plugin for heroku):
RedisStore = require('connect-redis')(express)
app.use express.session
secret: process.env.CLIENT_SECRET
cookie: { maxAge: 604800000 }
store: new RedisStore {client: redis}
After user logged in I store his info in req.session
after_user_logged_id = (req, user)->
req.session.current_user =
id: user._id
name: user.name
I need to restart server and clean all sessions: logout all users to force them login one more time. How should I do this ? Restarting redis plugin doesn't help.
redis.flushdb() may be a bit extreme if you end up storing something else in redis. You just need to delete all the "sess:*" keys. Unfortunately, there is no del *, so you can use something like this:
redis.keys("sess:*", function(err, key) {
redis.del(key, function(err) {
});
});
Code to clean all redis sessions:
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