Fix OAuth2 login and logout issues in React application #26384
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issues
Description
When creating an application with OAuth2 and React, the following issues were discovered:
When a user who is not logged in visits the logout page, infinite logout requests are sent to the backend.
infinite-logout-requests.mov
If there is a non-private route, such as the About page (
/about
), and the user clicks login on that page and logs in, the Redirect functionality breaks because the local storage records an incorrect redirect URL.redirect-issue.mov
JDL
Fixes
For issue 1, I made the following changes in
logout.tsx
:Regarding issue 2, I refactored the frontend login flow:
routes.tsx
, changed the route path of theLoginRedirect
component to/sign-in
instead of directly using the/oauth2/authorization/oidc
endpoint provided by the backend, and then redirected the user to theoauth2/authorization/oidc
endpoint in theLoginRedirect
component.url-utils.ts
, modified the return value of thegetLoginUrl()
function to/sign-in
route.account.tsx
andhome.tsx
with callback functions that use theuseNavigate
hook to redirect to the route returned bygetLoginUrl()
, ensuring the original path of all public routes is preserved.