SSO - 自定义图片在首次更新后再次无法更新

我们正在将 discourse 与 Php/Laravel 平台集成,并在其中实现了 SSO。用户的自定义图片仅更新一次。但是,如果我在 Laravel 平台中更改了个人资料图片,即使在注销并重新登录后,自定义图片也不会在 discourse 中再次更新。

即使我将 ‘avatar_force_update’ 设置为 true,自定义头像图片也没有被覆盖。

只是为了更新

我可以看到 SSO 记录已更新个人资料图片 URL,但即使我注销并重新登录,新的个人资料图片仍未在 discourse 中显示。

如果重新加载浏览器会怎样?

您是否启用了 discourse_connect_overrides_avatar 站点设置?

1 个赞

感谢您的回复。如果我重新加载浏览器、在隐身模式下打开或注销并重新登录,它都不会更新。

如前所述,它仅在首次更新时有效。例如:

  • 新用户首次使用 SSO 连接 Discourse 时,头像会更新。
  • 或者用户最初没有头像,在平台上更新头像,在这种情况下,它会在 Discourse 中得到反映。
  • 但是,如果用户有一个头像,并且在平台上更新了新头像,即使我注销/重新登录,或在不同浏览器中尝试,它也不会在 Discourse 中更新。我可以看到 SSO 记录中的个人资料图片 URL 已更新,但头像未更新。

谢谢你的回复,Renato!我没有勾选其他任何复选框

您可以尝试启用详细日志记录并查看日志,以确定 SSO 系统是否正在发送头像信息。

1 个赞

也许可以尝试启用 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)会将布尔值转换为 01。为了解决这个问题,Discourse 会在 SSO payload 中接受字符串 "true" 作为布尔值。您可以通过查看用户管理页面上显示的 SSO 记录中的 avatar_force_update 字段值来确认这一点。或者启用 Jay 提到的详细日志记录设置。

2 个赞