美文网首页
node 控制用户的session

node 控制用户的session

作者: 谁把月亮涂黑啦 | 来源:发表于2021-11-17 10:18 被阅读0次

有这样的场景:管理员需要在后台控制用户的某些状态,比如让用户下线,更新某个用户的权限等,但是登录态session往往存储在redis,而session在有效的情况下不会进行更新,所以只能自己修改redis里sessionid的键值,以egg框架为例,操作思路如下:

登录接口记录用户的sessionid,这是关键:

// 登录逻辑...
this.ctx.session.user = {
  user_id: user.user_id,
}
// 可以自定义命名
const saddKey = this.config.name + user.user_id
// 有效期(ms)
const maxAge = this.config.session.maxAge
// 缓存用户的sessionid,externalKey 是 随机生成的key,即redis中的sessionid
await this.app.redis.sadd(saddKey, this.ctx.session._sessCtx.externalKey)
// 设置过期时间,ttl 单位为秒
await this.app.redis.expire(saddKey, maxAge / 1000)

后台让前台用户下线,退出登录状态:

// 获取这个用户的sessionid
const sessKey = await this.app.redis.smembers(this.config.name + user_id)
// 删除用户的session
await this.app.redis.del(...sessKey)

同样的思路,可以在session中存储用户的权限数据,在后台编辑用户权限,实时更新redis中sessionid的值。


对于externalKey的解释见:https://github.com/eggjs/egg/issues/2010

相关文章

  • node 控制用户的session

    有这样的场景:管理员需要在后台控制用户的某些状态,比如让用户下线,更新某个用户的权限等,但是登录态session往...

  • Spring Security 实战 - Session管理

    Session在网络应用中,称为“会话控制”Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户...

  • Koa系列3:持久化用户session状态

    1. session背景知识: session也被称为“会话控制”,顾名思义,它用于控制网络会话,如用户登录信息、...

  • 分布式Session一致性入门简介

    Session简介 是什么? Session在网络中表示“会话控制”,用于存储特定用户所需的属性和其他的配置信息;...

  • 何为session?

    何为session 在计算机中,尤其是在网络应用中,称为“会话控制”。session 对象存储特定用户会话所需的属...

  • Spring Security源码分析九:Spring Secu

    Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及...

  • tomcat-session 共享

    0.session的了解 在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所...

  • nodejs 如何获取express-session的所有ses

    express-session express-session是在node服务端建立会话(session)的中间件...

  • PHP Session

    PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置...

  • MySQL:关于参数innodb_log_spin_cpu_ab

    这两个参数总体说来控制了如果用户线程(session)正在等待redo write/flush,控制进行多少次sp...

网友评论

      本文标题:node 控制用户的session

      本文链接:https://www.haomeiwen.com/subject/vdghtrtx.html