用户更改密码后注销

Log user out after they change their password

我看到有几个网站是这样实现的: 他们的前端每秒向服务器发出请求,以检查用户会话是否发生变化。

但其他网站没有这个,但他们仍然可以在用户更改密码后注销用户,而无需等待用户刷新页面。

他们使用什么机制?或者你有什么例子吗?

有两种方法可以做到这一点(想到)。

第一种方式,“轮​​询”,我猜你已经看到了工作方式,前端每隔几秒或几分钟发出一个 HTTP 请求来检查用户状态。

第二种方式是web sockets。这是一个持续打开的连接,因此沿着它来回传递的数据在网络日志中不是那么明显,因此您可能看不到它。

一种方法是删除用户更改密码时存储在数据库中的所有身份验证令牌。

以此为例:

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