Keycloak Angular在登录重定向url后持久保存URL哈希片段

use*_*025 5 angularjs keycloak

我们正在使用Keycloak
http://keycloak.github.io/docs/userguide/keycloak-server/html_single/index.html

和Angularjs的问题是我们需要首先加载Angular,因为我们在主页上的应用程序显示公共信息,当用户去说"Checkout"然后我们想要显示登录屏幕,你知道我们怎么可能做到了吗?

我们正在获取循环URL

http://192.168.3.34:8080/?redirect_fragment=%2Fapp%2Fdashboard
            &redirect_fragment=%2Fapp%2Fdashboard
            &prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none           &redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none&redirect_fragment=%2Fapp%2Fdashboard&prompt=none#
state=4674d401-5442-4459-8706-0b77443011bd&code=LnD4lRypAql5QkEO1mwtWHpaff1XaUeeACpY7-GP220.b6a0f296-e1a8-4b12-b34a-b1dcefa9a94f
Run Code Online (Sandbox Code Playgroud)

注意我们正在使用,keycloak.login();但它不起作用Keycloak服务器不接受"#/"重定向URL.

谢谢Francisco

Kie*_*eli 3

我自己也遇到过这个问题。通过修改 keycloak 解决了这个问题。主题/base/login/login.ftl:

 <form id="kc-form-login" onsubmit="login.disabled = true; return true;" action="${url.loginAction}" method="post">
Run Code Online (Sandbox Code Playgroud)

更改为:

<form id="kc-form-login" onsubmit="this.action = this.action + window.location.hash; login.disabled = true; return true;" action="${url.loginAction}" method="post">
Run Code Online (Sandbox Code Playgroud)

提交时,它会将 URL 中的哈希值附加到表单发布操作上。解决这个问题的关键是发现哈希值永远不会发送到服务器,而是完全由网络浏览器控制。