A test-web
应用程序链接到 keycloak 重置凭证页面:
http://localhost:9990/auth/realms/test/login-actions/reset-credentials?client_id=test-web&kc_locale=en
我们使用默认的keycloak
主题并在 Keycloak docker 镜像上运行11.0.2
.
用户界面工作正常,但kc_locale
不受尊重,并且 keycloak 页面上的 UI 语言切换也不起作用。 UI 开关确实更新了kc_locale
在 URL 中,但 UI 始终显示相同的语言。为领域配置了 2 种语言(de
and en
)。无论我将其中哪一个设置为默认值,UI 始终显示de
.
在帐户控制台中,语言切换以及kc_locale
两者实际上都改变了语言。但在重置凭据页面上它不起作用。
按照电子邮件的链接进入更新密码页面后,在此页面上的 UI 开关和kc_locale
工作正常。
http://localhost:9990/auth/realms/test/login-actions/required-action?execution=UPDATE_PASSWORD&client_id=test-web&tab_id=fZIAUd_jiPc
通过帐户控制台或更新密码页面更改语言后,重置凭据页面也会显示新选择的语言,但页面本身的语言开关不起作用。
可能是什么原因?
我浏览了各个版本,以了解这种行为何时发生变化。 8.0.2 尊重查询参数,但 9.0.0 到 14.0.0 不尊重。
我做了一个解决方法来解决这个问题
在模板.ftl
<a class="${properties.kcLocaleItemClass!}" href="${l.url}">${l.label} </a>
而不是将 href 更改为 l.locale
我添加了 onClick 事件,然后传递了一个函数,该函数在将 href 更改为 l.url 之前为所选语言设置 cookie
<li class="kc-dropdown-item"><a tabindex="0" onclick="changeLocale(`${l.label}`, `${l.url}`)">${l.label}</a></li>
function changeLocale(label, url) {
if (label == ‘English’) {
document.cookie = “KEYCLOAK_LOCALE=en”;
} else {
document.cookie = “KEYCLOAK_LOCALE=fr”;
}
window.location.href = url
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)