当用户在外部应用时,点击登录按钮,会通过 Discourse 的 SSO 提供商流程进行路由,然后返回外部应用。该外部应用可以存储包含用户数据的会话。当用户从 Discourse 注销时,Webhook 可以删除外部应用的会话。我不太确定,但我想 Webhook 的头部是 X-Discourse-Event: user_logged_out。
编辑:从外部站点注销是通过 Discourse API 完成的。
与其询问 Discourse 用户是否已登录,不如直接询问外部应用。在我的情况下,这仅用于在外部站点中移除登录按钮等操作。
我稍后可以再次检查我的代码。我有一段时间没看过它了,但我认为它确实做了类似的事情。