0

对于密码重置链接 keycloak 默认显示链接过期时间分钟,但我们希望以小时为单位显示。

为此,我们在 keycloak 电子邮件主题 .ftl 文件 (password-reset.ftl) 中进行了修改。如果我们在 keycloak 基本电子邮件主题 (/opt/keycloak/themes/base/email) 中执行这些更改,这些更改将正常工作。但是这些更改在 keycloak 部署/升级后被丢弃。

为避免这种情况,我们已将此主题移动到自定义主题文件夹(/opt/keycloak/themes/mytheme/email),并为来自 keycloak 管理领域主题配置的电子邮件选择自定义电子邮件主题,但仍然,keycloak 未使用自定义主题作为电子邮件.

文件:主题/mytheme/email/html/password-reset.ftl

以小时而不是分钟显示时间的代码:

<html>
  <body>
     ${msg("passwordResetBodyHtml",link, (linkExpiration/60)?string["0"], realmName)?no_esc}
  </body>
</html>

为来自 keycloak 领域配置配置屏幕截图的电子邮件选择 mytheme

4

1 回答 1

0

要将您的时间格式化为分钟、小时、天,更好的方法是传递linkExpirationFormatter(linkExpiration)给 msg 函数并将时间单位转换添加到 messages_xx.properties 文件中,例如:

linkExpirationFormatter.timePeriodUnit.seconds=seconds
linkExpirationFormatter.timePeriodUnit.seconds.1=second
linkExpirationFormatter.timePeriodUnit.minutes=minutes
linkExpirationFormatter.timePeriodUnit.minutes.1=minute
linkExpirationFormatter.timePeriodUnit.hours=hours
linkExpirationFormatter.timePeriodUnit.hours.1=hour
linkExpirationFormatter.timePeriodUnit.days=days
linkExpirationFormatter.timePeriodUnit.days.1=day
于 2022-02-01T17:31:55.013 回答