Sails js 中的当前会话 ID
Current session id in sails js
我想在sails.js中一键删除所有设备的所有会话。如何获取当前会话id?
例如:
console.log(req.session.sessid) // sess:jV-M6_ZNCp-8x_jYPbSfbUilXd_T85i_
sails.js 版本 1.1.0-3
如果我从你的问题中理解正确,req.session.destroy() 就是你的答案。
https://sailsjs.com/documentation/reference/blueprint-api/destroy
所有会话都不知道它们属于哪个用户除非您已将会话映射到持久存储系统中,例如Redis/Memcached缓存或MySQL、MongoDB数据库。
我能想到的众多解决方案之一如下:
在您的 sails 应用程序中创建一个可以调用的模型 SessionMapper
- 添加三列:userID、sessionID 和 isActive(布尔值)。
现在,每当用户登录时,都会在此 model/table 中创建一个条目。
- 创建一个中间件,所有 API 请求(
/login
和 public API 除外)都将通过该中间件流动
- 此中间件将检查当前会话是否仍处于活动状态——充当额外的身份验证层。
- 如果会话处于活动状态,则授予访问权限/
next()
- 如果会话无效或
isActive
=== false
,请在内部注销用户并重定向到带有一些消息的登录页面。
要注销用户的所有活动会话,请在 SessionMapper
模型中为 userID
= <user-id>
设置 isActive
= false
。
注意:该方法会在连接SessionMapper
的datasource
上增加很多READ
操作。如果它损害了主要操作,请将其移至更好、更高效的解决方案,例如 Redis/Memcached。
我希望这个伪代码能帮助你完成你的任务。 @tspentzas,下次当您寻求解决方案时,请在您的问题中添加 到目前为止您尝试过的任何内容,以便社区以更好的方式帮助您。
我想在sails.js中一键删除所有设备的所有会话。如何获取当前会话id?
例如:
console.log(req.session.sessid) // sess:jV-M6_ZNCp-8x_jYPbSfbUilXd_T85i_
sails.js 版本 1.1.0-3
如果我从你的问题中理解正确,req.session.destroy() 就是你的答案。
https://sailsjs.com/documentation/reference/blueprint-api/destroy
所有会话都不知道它们属于哪个用户除非您已将会话映射到持久存储系统中,例如Redis/Memcached缓存或MySQL、MongoDB数据库。
我能想到的众多解决方案之一如下:
在您的 sails 应用程序中创建一个可以调用的模型
SessionMapper
- 添加三列:userID、sessionID 和 isActive(布尔值)。
现在,每当用户登录时,都会在此 model/table 中创建一个条目。
- 创建一个中间件,所有 API 请求(
/login
和 public API 除外)都将通过该中间件流动- 此中间件将检查当前会话是否仍处于活动状态——充当额外的身份验证层。
- 如果会话处于活动状态,则授予访问权限/
next()
- 如果会话无效或
isActive
===false
,请在内部注销用户并重定向到带有一些消息的登录页面。
- 如果会话处于活动状态,则授予访问权限/
- 此中间件将检查当前会话是否仍处于活动状态——充当额外的身份验证层。
要注销用户的所有活动会话,请在 SessionMapper
模型中为 userID
= <user-id>
设置 isActive
= false
。
注意:该方法会在连接SessionMapper
的datasource
上增加很多READ
操作。如果它损害了主要操作,请将其移至更好、更高效的解决方案,例如 Redis/Memcached。
我希望这个伪代码能帮助你完成你的任务。 @tspentzas,下次当您寻求解决方案时,请在您的问题中添加 到目前为止您尝试过的任何内容,以便社区以更好的方式帮助您。