examples/auth-router-provider/README.md
This example demonstrates how to restrict access to routes to authenticated users when using <RouterProvider>.
The primary difference compared to how authentication was handled in BrowserRouter is that since RouterProvider decouples fetching from rendering, we can no longer rely on React context and/or hooks to get our user authentication status. We need access to this information outside of the React tree so we can use it in our route loader and action functions.
For some background information on this design choice, please check out the Remixing React Router blog post and Ryan's When to Fetch talk from Reactathon.
Be sure to pay attention to the following features in this example:
loader functions to check for user authenticationredirect from the /protected loader when the user is not logged in<Form> and an action to perform the loginfrom search param and a redirectTo hidden input to preserve the previous location so you can send the user there after they authenticate<Form replace> to replace the /login route in the history stack so the user doesn't return to the login page when clicking the back button after logging in<fetcher.Form> and an action to perform the logoutOpen this example on StackBlitz: