我看到一些网站以这种方式实施: 他们的前端每秒都会向服务器发出一个请求,以检查用户会话是否发生更改。
但是其他网站没有此密码,但是他们更改密码后仍可以注销用户,而无需等待用户刷新页面。
他们使用什么机制?还是有什么例子?
答案 0 :(得分:1)
可以想到两种方法。
第一种方式“轮询”是我想您已经看到的工作方式,前端每隔几秒钟或每隔几分钟发出一次HTTP请求以检查用户状态。
第二种方法是使用web sockets。这是一个持续开放的连接,因此来回传递的数据在网络日志中并不是那么明显,因此您可能看不到它。
答案 1 :(得分:0)
一种方法是删除用户更改密码时存储在数据库中的所有身份验证令牌。
以这个为例:
const user = await findById(userId) // Find user
user.password = newPassword // Set new user password
user.tokens = [] // Delete all auth tokens by setting it to an empty array
await user.save() // Save user changes to the database