fix(oidc): resolve navigation throttling and blank screen during sign-in/sign-out with Keycloak + dcm4chee + Traefik (#5373)

This commit is contained in:
Omar Hamad 2025-08-29 16:11:09 +03:00 committed by GitHub
parent ecf91bdcd4
commit 79473c2ea4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 14 deletions

View File

@ -1,12 +1,15 @@
import React from 'react'; import React, { useEffect } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
function SignoutCallbackComponent({ userManager }) { function SignoutCallbackComponent({ userManager }) {
const navigate = useNavigate(); const navigate = useNavigate();
useEffect(() => {
const onRedirectSuccess = (/* user */) => { const onRedirectSuccess = (/* user */) => {
const { pathname, search = '' } = JSON.parse(sessionStorage.getItem('ohif-redirect-to')); const { pathname, search = '' } = JSON.parse(
sessionStorage.getItem('ohif-redirect-to')
);
navigate(`${pathname}?${search}`); navigate(`${pathname}?${search}`);
}; };
@ -19,6 +22,7 @@ function SignoutCallbackComponent({ userManager }) {
.signoutRedirectCallback() .signoutRedirectCallback()
.then(user => onRedirectSuccess(user)) .then(user => onRedirectSuccess(user))
.catch(error => onRedirectError(error)); .catch(error => onRedirectError(error));
}, [navigate, userManager]);
return null; return null;
} }

View File

@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { useEffect } from 'react'; import { useEffect, useMemo } from 'react';
import { Route, Routes, useLocation, useNavigate } from 'react-router'; import { Route, Routes, useLocation, useNavigate } from 'react-router';
import CallbackPage from '../routes/CallbackPage'; import CallbackPage from '../routes/CallbackPage';
import SignoutCallbackComponent from '../routes/SignoutCallbackComponent'; import SignoutCallbackComponent from '../routes/SignoutCallbackComponent';
@ -94,7 +94,7 @@ function LoginComponent(userManager) {
} }
function OpenIdConnectRoutes({ oidc, routerBasename, userAuthenticationService }) { function OpenIdConnectRoutes({ oidc, routerBasename, userAuthenticationService }) {
const userManager = initUserManager(oidc, routerBasename); const userManager = useMemo(() => initUserManager(oidc, routerBasename), [oidc, routerBasename]);
const getAuthorizationHeader = () => { const getAuthorizationHeader = () => {
const user = userAuthenticationService.getUser(); const user = userAuthenticationService.getUser();