【问题标题】:Keycloak custom email theme not workingKeycloak自定义电子邮件主题不起作用
【发布时间】:2022-02-02 01:31:55
【问题描述】:

对于密码重置链接 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 configuration screenshot here

【问题讨论】:

  • 向我们展示您的代码,这对我有用。
  • @ThomasRS 我已经更新了帖子,您现在可以查看吗?
  • 那么错误信息或意外结果是什么?

标签: keycloak custom-theme


【解决方案1】:

要将您的时间格式化为分钟、小时、天,更好的方法是将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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 2015-06-08
    • 2021-05-04
    • 1970-01-01
    • 2023-01-09
    • 2020-02-12
    • 2011-03-06
    • 2020-02-10
    相关资源
    最近更新 更多