Я пробовал следующие решения и все они, но после того, как они переосмысливают. Работа:
Я использую React-oidc-context .
Решение 1
Код: Выделить всё
window.onpopstate = function() {
navigate("/component1");
}
< /code>
Решение 2 < /p>
window.history.pushState({}, '', "/component1");
< /code>
Решение 3 < /p>
window.addEventListener("popstate", () => {
navigate("/component1");
});
Это конфигурации KeyCloak в React:
Код: Выделить всё
export const userManager = new UserManager({
authority: 'https://example.com/realms/example-realm',
client_id: 'example-clientid',
redirect_uri: 'https://www.example.com/',
response_type: 'code',
post_logout_redirect_uri: window.location.origin
});
export const onSigninCallback = () => {
window.history.replaceState({}, document.title, "/");
};
< /code>
Затем я использую вышеуказанные конфигурации в index.tsx: < /p>
import { BrowserRouter } from 'react-router-dom';
import { AuthProvider} from 'react-oidc-context';
import { onSigninCallback, userManager } from './config';
ReactDOM.render(
,
document.getElementById("root")
);
< /code>
Затем в компоненте я проверяю, является ли пользователь аутентифицирован или нет. После аутентификации, отсюда я хочу вернуться к предыдущему маршруту, в котором я был, но когда нажимаю назад, я снова перенаправляюсь на KeyCloak: < /p>
const [hasTriedSignin, setHasTriedSignin] = useState(false);
const nav=useNavigate();
const auth = useAuth();
useEffect(() => {
if (!hasAuthParams() && !auth.isAuthenticated && !auth.activeNavigator && !auth.isLoading && !hasTriedSignin) {
auth.signinRedirect();
setHasTriedSignin(true);
}
});
window.onpopstate = function() {
navigate("/previousRoute");
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... applicatio