未定义的 Keycloak 属性 Authenticated 和 UserInfo

Posted

技术标签:

【中文标题】未定义的 Keycloak 属性 Authenticated 和 UserInfo【英文标题】:Undefined Keycloak Properties Authenticated and UserInfo 【发布时间】:2021-07-03 06:21:54 【问题描述】:

我正在尝试获取登录用户的用户名和 uid。

在我的应用程序中,我使用了 ReactKeycloakProvideruseKeycloak()

import ReactKeycloakProvider from '@react-keycloak/web';
import keycloak from './keycloak';

const onKeycloakEvent = (event: any, error: any) => 
    console.log('onKeycloakEvent', event, error)


const onKeycloakTokens = (tokens: any) => 
    console.log('onKeycloakTokens', tokens)


const initOptions = 
    onLoad: 'login-required',
    checkLoginIframe: false


ReactDOM.render(
    <React.StrictMode>
        <ReactKeycloakProvider
            authClient=keycloak
            initOptions=initOptions
            onEvent=onKeycloakEvent
            onTokens=onKeycloakTokens
        >
            <Provider store=store>
                <App/>
            </Provider>
        </ReactKeycloakProvider>

    </React.StrictMode>,
    document.getElementById('root')
);

作为测试,我想看看是否可以将 userInfo 提取到我的Header.tsx

import  useKeycloak from "@react-keycloak/web";

const Header = () => 

    const  keycloak, initialized  = useKeycloak();

    console.log(keycloak);
    console.log(keycloak.authenticated);
    console.log(keycloak.userInfo);
    ...

问题:由于某种原因,以下日志输出 undefined

console.log(keycloak.authenticated);
console.log(keycloak.userInfo);

官方文档中的例子是这样的:

https://github.com/react-keycloak/react-keycloak-examples/blob/master/examples/react-router/src/pages/Home.tsx

和我的几乎一模一样。

【问题讨论】:

【参考方案1】:

我找到了解决办法。

我不得不更改 Keycloak 中的设置。所以我所做的是:选择我的 Realm,然后在 Clients -> Acess Type 下并将其从 confidential 更改为 public

【讨论】:

以上是关于未定义的 Keycloak 属性 Authenticated 和 UserInfo的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义的属性“keycloak-token”

Keycloak - 自定义 SPI 未出现在列表中

无法定义以 keycloak 开头的属性

如何通过employeeNumber或自定义属性搜索keycloak用户?

Keycloak 将自定义属性检索到 KeycloakPrincipal

Keycloak:在社交身份提供者登录时传递自定义用户属性