反应:在重定向到 Keycloak IDP 页面之前阻止显示应用程序

Posted

技术标签:

【中文标题】反应:在重定向到 Keycloak IDP 页面之前阻止显示应用程序【英文标题】:React: prevent showing application before redirecting to Keycloak IDP page 【发布时间】:2021-09-07 05:02:37 【问题描述】:

我正在开发一个 React 应用程序并使用 Keycloak 对整个应用程序进行身份验证和授权。不会有任何不安全的路线。因此,我在 index.js 文件中初始化 KeyCloak。 我也跳过了 KeyCloak 的普通登录页面,因为所有登录都将使用 MS IDP 完成。 只有KeyCloak适配器正在使用并且可以使用,没有其他第三方包。

它工作得很好,但是在重定向发生之前,任何访问的路由都会闪烁一秒钟。

我有 KeyCloak 作为这样的服务:

import Keycloak from "keycloak-js";

const _kc = new (Keycloak as any)("/keycloak.json");

const initKeycloak = (reactRender: any, component: any, domMethod: any) => 
  _kc
    .init()
    .then(() => 
      _kc.login( idpHint: "azureAD" );
    )
    .then(() => 
      reactRender(component, domMethod("root"));
    );
;

我的 index.js 文件如下所示:

import React from "react";
import ReactDOM from "react-dom";

import App from "./App";
import keycloakService from "./keyCloakService";

const q = document.getElementById.bind(document);

keycloakService.initKeycloak(ReactDOM.render, <App />, q);

由于检查身份验证是异步的,我想我可以通过 ReactDOM.render 方法并只有在身份验证发生时才能成功调用它。 但是,即使使用这种方法,我也无法让它工作,并且路线会瞬间闪烁。

如何在不使用任何第三方软件包的情况下实现这一目标?

提前致谢!

【问题讨论】:

【参考方案1】:

只有当 KeyCloak 服务返回的 auth 变量为 true 时,我才设法更改行为并显示 App 组件。

【讨论】:

以上是关于反应:在重定向到 Keycloak IDP 页面之前阻止显示应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 keycloak 中,如何使用 kc_idp_hint 重定向到 IDP?

使用 keycloak 保护特定的反应页面

组件在重定向到同一页面时未呈现

Keycloak IdP SAML2 将 XML 元数据导出到 SP

在重定向之前需要反应上下文来更新

Keycloak + Spring Cloud Gateway + Angular 9