原因

使用window.location.href或导航栏输入URL进行页面跳转时,浏览器会完全刷新页面,这会导致当前的JavaScript上下文被清空。

重新执行app.tsx或index项目初始化文件,导致Keycloak被重新初始化,触发keycloak再次登录导致页面刷新。

而点击切换页面(如通过路由库 react-router或vue-router)通常是单页应用(SPA)的行为,页面不会刷新,JavaScript上下文和存储状态会被保留,因此不会出现退出登录的问题。

解决方法:

使用前端路由(如react-router的useNavigate或history.push)代替window.location.href,避免页面刷新。

import { history, type IRoute } from '@umijs/max';
// window.location.href = '/user/detail/' ;
history.push('/user/detail/')

同时不指定具体重定向界面,可以达到redirect_uri历史的作用

 const authenticated = await keycloak.init({
            onLoad: 'login-required',               //初次登录
            redirectUri: window.location.href,    //登录后重定向页面
        });
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐