WordPress 已在此处通过 WP-Discourse 插件配置为单点登录(SSO)提供商。在某些边缘情况下,我们需要注销用户,以确保其群组分配等信息的一致性。
当用户无法理解我们的说明时,我们会通过 WordPress 后台注销其会话。但这并不会将其从 Discourse 中注销。
是否有办法通过某个函数或其他方式,在 WordPress 中接入 Discourse 的注销信号,从而实现这一功能?
WordPress 已在此处通过 WP-Discourse 插件配置为单点登录(SSO)提供商。在某些边缘情况下,我们需要注销用户,以确保其群组分配等信息的一致性。
当用户无法理解我们的说明时,我们会通过 WordPress 后台注销其会话。但这并不会将其从 Discourse 中注销。
是否有办法通过某个函数或其他方式,在 WordPress 中接入 Discourse 的注销信号,从而实现这一功能?
您是否知道当通过 WordPress 管理员界面注销用户时会触发哪个 WordPress 动作?WP Discourse 插件会挂钩到 clear_auth_cookie 动作,以同步 WordPress 和 Discourse 之间由用户发起的注销操作。也许存在另一个动作可以用于此场景,并且即使是由站点管理员注销用户时也能正常工作。
我会深入调查一下,然后回复你。
我怀疑它使用了 wp_ajax_destroy_sessions 函数,并在 $sessions->destroy_all(); 中执行了一些会话令牌的操作。如何在此函数中钩入 clear_auth_cookie?
我认为正是使用了该函数。
我快速浏览了 WordPress 代码,但没发现明显的实现方式。如果这不是您经常执行的操作,Discourse 管理员可以点击用户管理页面顶部显示的“退出登录”按钮来将用户从 Discourse 中注销。若要强制用户通过 SSO 重新登录,您可以手动将用户从 Discourse 注销,然后再将其从 WordPress 中注销。
我会试一试,如果这个策略行不通,我可能几个月后会把这个话题顶上来。