从 freemarker 模板重置身份验证流程

问题描述 投票:0回答:1

有没有办法从 freemarker 模板中重置当前的身份验证流程?我们有一个复杂的登录过程,具有多个链式身份验证器。大多数身份验证器的质询响应上还有一个

cancel
按钮,目前它是带有
href="${url.loginUrl}"
的锚标记,但单击它并没有达到预期的效果:Keycloak 会记住身份验证会话的状态因此,当前的身份验证器页面只是重新加载,而不是返回到开头。在身份验证器的代码中,可以
context.resetFlow()
恢复身份验证会话的原始状态。 freemarker 也有办法做到这一点吗?

编辑:我当前的解决方案是在模板中使用

href=${url.loginUrl}&reset=true
,并检查身份验证器中的查询参数,然后触发
resetFlow
。我想知道是否有更好的方法。

keycloak freemarker
1个回答
0
投票
  1. 在 UI 中添加一个重置流程的按钮:
<form id="kc-otp-login-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
    <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!} pf-m-action">
        <div class="pf-v5-c-form__actions">
            <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${kcSanitize(msg("backToLogin"))?no_esc}" />
        </div>
    </div>
</form>
  1. 重置验证器中提交操作的流程:
@Override
public void action(AuthenticationFlowContext context) {
    context.resetFlow();
}
© www.soinside.com 2019 - 2024. All rights reserved.