express-session 服务器主动删除指定用户的session问题
发布于 9 年前 作者 adam1985 10037 次浏览 最后一次编辑是 8 年前 来自 问答

在最近的项目中,遇到一个问题。在每次用户登录的时候,都把用户的信息保存在session值中。 所以现在有个问题,如果在后台管理端把该用户删除,但是由于此用户的信息保存在session中,如果此用户一直没有重新登录,则没有达到删除的效果,即用户仍然可以登录操作。 现在想,能否在服务器端主动删除此session???达到彻底删除用户的效果

var session = require('express-session');
var MongoStore = require('connect-mongo')(session);

app.use(session({
    secret: settings.cookieSecret,
    key: settings.db,//cookie name
    cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
    store: new MongoStore({
        db: settings.db,
        host: settings.host,
        port: settings.port
    })
}));
6 回复

session能删除的唯一“正确方法” 就是过期。 你要是想针对某一SESSION删除。直接进MONGODB删就行了。

MONGODB集合里,怎么判断是哪个用户呢

@adam1985 用户信息也是在MONGODB里的,SID是KEY,V是JSON.parse(session)

@MiguelValentine 只能这样了,谢谢

express-session + passport 合用才是正道。这样你就不用操作session数据库了。 session数据库里的信息必须严格用过期自动删除的方法。不要乱动。

@eeandrew 在线用户列表 可否提点一下,谢谢啦

回到顶部