【问题标题】:Log user out after they change their password更改密码后注销用户
【发布时间】:2021-01-28 10:05:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js express session next.js


    【解决方案1】:

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

    以此为例:

    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
    

    【讨论】:

    • 此方法不会自动将用户从前端应用程序中注销,但感谢您的回答
    【解决方案2】:

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

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

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

    【讨论】:

    • 我明白了,现在就得到它......以及如何从我们的浏览器中检查我们的前端应用程序是否与服务器有套接字连接?
    • 以chrome为例,你可以进入网络标签,然后选择“WS”
    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2021-12-03
    • 2021-06-19
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多