我们正在将 discourse 与 Php/Laravel 平台集成,并在其中实现了 SSO。用户的自定义图片仅更新一次。但是,如果我在 Laravel 平台中更改了个人资料图片,即使在注销并重新登录后,自定义图片也不会在 discourse 中再次更新。
即使我将 ‘avatar_force_update’ 设置为 true,自定义头像图片也没有被覆盖。
我们正在将 discourse 与 Php/Laravel 平台集成,并在其中实现了 SSO。用户的自定义图片仅更新一次。但是,如果我在 Laravel 平台中更改了个人资料图片,即使在注销并重新登录后,自定义图片也不会在 discourse 中再次更新。
即使我将 ‘avatar_force_update’ 设置为 true,自定义头像图片也没有被覆盖。
只是为了更新
我可以看到 SSO 记录已更新个人资料图片 URL,但即使我注销并重新登录,新的个人资料图片仍未在 discourse 中显示。
如果重新加载浏览器会怎样?
您是否启用了 discourse_connect_overrides_avatar 站点设置?
感谢您的回复。如果我重新加载浏览器、在隐身模式下打开或注销并重新登录,它都不会更新。
如前所述,它仅在首次更新时有效。例如:
您可以尝试启用详细日志记录并查看日志,以确定 SSO 系统是否正在发送头像信息。
也许可以尝试启用 discourse connect overrides avatar 设置,然后退出 Discourse 登录,再重新登录。我相当确定,即使没有启用该设置,只要 SSO payload 中的 avatar_force_update 参数设置为 true,头像也应该可以更新。处理此问题的代码有点复杂:discourse/app/models/discourse_connect.rb at 2ff3f44b957268718e03554fb25d485e1d449ed5 · discourse/discourse · GitHub
如果您无法启用该设置,或者只是想了解发生了什么,可以检查您传递给 avatar_force_update 参数的值是否被 Discourse 正确解释为布尔值 true。有些框架(尤其是 WordPress)会将布尔值转换为 0 或 1。为了解决这个问题,Discourse 会在 SSO payload 中接受字符串 "true" 作为布尔值。您可以通过查看用户管理页面上显示的 SSO 记录中的 avatar_force_update 字段值来确认这一点。或者启用 Jay 提到的详细日志记录设置。