How to implement authenticated routes in React Router 4?

Sometimes, we want to implement authenticated routes in React Router 4.

In this article, we’ll look at how to implement authenticated routes in React Router 4.

How to implement authenticated routes in React Router 4?

To implement authenticated routes in React Router 4, we can create a component that checks the auth status and render the content according to that.

We can wrap this component around our authenticated routes so that they only show when the user is logged in.

For instance, we write

RouteRequiresLogin.js

import React from "react";
import { Route } from "react-router-dom";

const RouteRequiresLogin = props => {
   const userIsLogged = useLoginStatus();

   return (
      <Route {...props}>{userIsLogged ? props.children : <LoginPage/>}</Route>
   );
};

export default RouteRequiresLogin;

to create the RouteRequiresLogin component that renders props.children is the user is authenticated which we check with userIsLogged .

If userIsLogged is false, we render the LoginPage component.

Then we can use it by writing

<>
  <RouteRequiresLogin path="/dashboard">
    <DashboardPage />
  </RouteRequiresLogin>
  <Route path="/sign-up">
    <SignUpPage />
  </Route>
</>;

to wrap the DashboardPage, which requires authentication, with RouteRequiresLogin.

The public SignUpPage route wraps around the React Router Route component.

Conclusion

To implement authenticated routes in React Router 4, we can create a component that checks the auth status and render the content according to that.

We can wrap this component around our authenticated routes so that they only show when the user is logged in.