我想在sails.js中一键删除所有设备上的所有会话。如何获取当前会话ID?
例如:
console.log(req.session.sessid) // sess:jV-M6_ZNCp-8x_jYPbSfbUilXd_T85i_
sails.js版本1.1.0-3
答案 0 :(得分:1)
如果我对您的问题的理解正确,那么req.session.destroy()就是您的答案。
https://sailsjs.com/documentation/reference/blueprint-api/destroy
答案 1 :(得分:1)
所有会话都不知道它们属于哪个用户,除非您已将会话映射到持久存储系统(如Redis / Memcached缓存或MySQL,MongoDB数据库)中,除非。
我能想到的众多解决方案之一如下:
在您的sails应用中创建一个可以称为SessionMapper
现在,只要用户登录,就可以在此模型/表中创建一个条目。
/login
和公共API除外)将通过该中间件流动
next()
isActive
=== false
,请在内部注销用户并使用一些消息重定向到登录页面。要注销用户所有活动会话,请在isActive
模型中为false
= userID
设置<user-id>
= SessionMapper
。
注意:此方法将增加与READ
连接的datasource
的许多SessionMapper
操作。如果会影响主要操作,请将其移至更好和高效的解决方案,例如Redis / Memcached。
我希望这个伪代码可以帮助您完成任务。 @tspentzas,下次您寻求解决方案时,请将到目前为止您尝试过的所有内容添加到您的问题中,以使社区更好地为您提供帮助。