解决前端路由切换导致Keycloak触发页面刷新问题
使用window.location.href进行页面跳转时,浏览器会完全刷新页面,这会导致当前的JavaScript上下文被清空。
如果你的登录状态依赖于某些临时存储(如LocalStorage或sessionStorage),而这些存储在页面刷新后未正确初始化或丢失,就会导致用户被认为未登录。触发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/')