我正在努力使用 keycloak / keycloak-js 登录,目标是验证用户是否已经连接到 keycloak 或没有。为此,我在 keycloak.init 期间使用
onLoad: check-sso
。
当我有一个用户并单击“模拟”时,它工作正常,但是,如果用户未连接,则网址中出现一秒错误:
http://localhost:8000/#error=login_required&state=...
我尝试更改提示=“无”,但它什么也没做
我找不到任何方法可以设置静默模式,以便在未登录网址栏时不显示错误?
该项目使用Keycloak-js,Keycloak服务器版本为15.0.2
还是不行
我在使用时也遇到同样的问题
钥匙斗篷: 18.0.1
react-keycloak/web: 3.4.0.
这是因为我尝试使用 keycloak.init 并传递我想要的 init 选项
keycloak.init({
onLoad: "check-sso",
silentCheckSsoRedirectUri: window.location.origin + "/silent-check-sso.html",
})
如 keycloak JS 客户端文档中所述。
但这导致了竞争条件并不断重新刷新页面。
修复方法是将 init 选项直接传递给 ReactKeyCloakProvider
<ReactKeycloakProvider
authClient={keycloak}
initOptions={{
onLoad: "check-sso",
silentCheckSsoRedirectUri:
window.location.origin + "/silent-check-sso.html",
}}
onEvent={eventLogger}
onTokens={tokenLogger}
>
<BrowserRouter>
<App />
</BrowserRouter>
</ReactKeycloakProvider>
示例或文档中都没有明确说明这一点。
根据其文档,发生这种情况是因为一些现代浏览器阻止了第三方 cookie。 具有跟踪保护的现代浏览器