【发布时间】:2021-01-28 10:05:19
【问题描述】:
我看到一些网站是这样实现的: 他们的前端每秒向服务器发出一次请求,以检查用户会话是否发生变化。
但其他网站没有这个功能,但他们在更改密码后仍然可以注销用户,而无需等待用户刷新页面。
他们使用什么机制?或者你有什么例子吗?
【问题讨论】:
标签: node.js express session next.js
我看到一些网站是这样实现的: 他们的前端每秒向服务器发出一次请求,以检查用户会话是否发生变化。
但其他网站没有这个功能,但他们在更改密码后仍然可以注销用户,而无需等待用户刷新页面。
他们使用什么机制?或者你有什么例子吗?
【问题讨论】:
标签: node.js express session next.js
一种方法是在用户更改密码时删除存储在数据库中的所有身份验证令牌。
以此为例:
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
【讨论】:
有两种方法可以做到这一点(想到的)。
第一种方式,“轮询”,我猜你已经看到了,前端每隔几秒或几分钟发出一次 HTTP 请求以检查用户状态。
第二种方式是web sockets。这是一个持续打开的连接,因此沿它来回传递的数据在网络日志中并不那么明显,因此您可能看不到它。
【讨论】: