解决前端路由切换导致Keycloak触发页面刷新问题
如果你的登录状态依赖于某些临时存储(如LocalStorage或sessionStorage),而这些存储在页面刷新后未正确初始化或丢失,就会导致用户被认为未登录。而点击切换页面(如通过路由库 react-router或vue-router)通常是单页应用(SPA)的行为,页面不会刷新,JavaScript上下文和存猪状态会被保留,因此不会出现退出登录的问题。使用window.location.h
·
原因
使用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, //登录后重定向页面
});
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)