240660
在项目中使用到了egg-session、egg-session-redis 将session内容保存在redis中。其实现原理是在app上挂载一个sessionStore 并通过时间戳+随机串获得一个externalKey与用户cookie映射,通过该externalKey进行redis读写(可能我说的原理不太对)。 但在某些场景中(比如管理员禁用某用户账号,在设置用户状态后将该用户的session禁用使其登出)如何手动将该session失效? 因为无法获取该用户的externalKey,个人感觉问题的关键是能够构建一张用户信息与externalKey的映射表。 个人有一个感觉实现起来不优雅的思路:将egg-session-redis重写,当用户登录时调用该插件设置session时候把externalKey一并set进去,并将该key与用户主键取出写入外部数据表,当禁用用户时通过用户id读取该key并通过sessionStore.destory将session销毁,强迫用户登出。 想请教各位老哥有没有更加优雅的实现方法?