如何在 Keycloak .ftl 模板中加载用户数据?

Posted

技术标签:

【中文标题】如何在 Keycloak .ftl 模板中加载用户数据?【英文标题】:How can I load user data in a Keycloak .ftl template? 【发布时间】:2021-09-12 14:53:54 【问题描述】:

我有一个自定义的 login-update-password.ftl 文件。我想显示用户的名字和姓氏。在基本示例的模板文件中,我看到了$username,它让我可以显示用户名。但是当我做$firstname 时,会发生以下情况:

12:25:46,752 ERROR [freemarker.runtime] (default task-3) Error executing FreeMarker template: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> firstname  [in template "login-update-password.ftl" at line 14, column 3]

当我执行$user.firstname 时,会发生以下情况:

12:27:40,453 ERROR [freemarker.runtime] (default task-2) Error executing FreeMarker template: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> user  [in template "login-update-password.ftl" at line 14, column 3]

我调试了可用的变量,但似乎没有什么是我需要的。

<#list .data_model?keys as key>
  $key
</#list>
msg
execution
social
auth
isAppInitiatedAction
requiredActionUrl
message
locale
authenticatorConfigured
login
url
messagesPerField
client
realm
kcSanitize
scripts
properties
username

如何加载更多用户数据?

【问题讨论】:

【参考方案1】:

尝试使用 getFirstName 方法代替 (user.firstname)。 例如:user.getFirstName()

【讨论】:

缺少用户变量。因此,当我尝试$user.firstname 时,我收到与上述相同的错误。所以当我做$user.getFirstName()时,我也会收到The following has evaluated to null or missing: ==&gt; user .... 另外,如果$user.getFirstName() 有效(是的,它没有),那么更好的形式是$user.firstName(不是get()Name 是大写字母)。

以上是关于如何在 Keycloak .ftl 模板中加载用户数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 keycloak 的 ftl 文件中包含 React js 文件?

keycloak 8 登录更新密码 ftl 文件未加载

创建 keycloak 自定义主题

如何在运行时从文件中加载 HTML 模板?

如何在 Joomla Protostar 模板中加载外部 JS 和 URL

如何在 webpack 中加载 Pug 模板而不编译为 HTML?