protected routes in reactjs

 Navbar.js

import { Link, Route, Routes } from "react-router-dom"


import Home from './Home'

import Login from './Login'

import Profile from './Profile'

import Contact from './Contact'


import CreateToken from './Token.js'


import Protected from './Protected'


export default function Navbar() {

    return (

        <>

            <nav class="navbar navbar-expand-lg bg-body-tertiary">

                <div class="container-fluid">

                    <Link class="navbar-brand" href="#">Navbar</Link>

                    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">

                        <span class="navbar-toggler-icon"></span>

                    </button>

                    <div class="collapse navbar-collapse" id="navbarSupportedContent">

                        <ul class="navbar-nav me-auto mb-2 mb-lg-0">

                            <li class="nav-item">

                                <Link class="nav-link active" aria-current="page" to="/">Home</Link>

                            </li>

                            <li class="nav-item">

                                <Link class="nav-link active" to="/login">Login</Link>

                            </li>

                            <li class="nav-item">

                                <Link class="nav-link active" to="/profile">Profile</Link>

                            </li>

                            <li class="nav-item">

                                <Link class="nav-link active" to="/contact">Contact</Link>

                            </li>

                        </ul>


                    </div>

                </div>

            </nav>


            <Routes>

                <Route path="/" element={<Home />}></Route>

                <Route path="/login" element={<Login />}></Route>

                <Route path="/profile" element={<Protected Component={Profile} />} ></Route>

                <Route path="/contact" element={<Contact />}></Route>

                <Route path="/token" element={<CreateToken />}></Route>

            </Routes>


        </>

    )

}

-------------------------------------------------------------------------------------------------------------------

Protected.js

import { useEffect } from "react";

import { useNavigate } from "react-router";


export default function Protected(props){


    const {Component} = props;


    const navigate = useNavigate();


    useEffect(() => {

        let login = localStorage.getItem("login_token");

        if(!login){

            navigate("/login");

        }

    })


    return(

        <>

        <Component />

        </>

    )

}

------------------------------------------------------------------------------------------------------------------

Token.js 

export default function Token(){


    localStorage.setItem("login_token","brianlovemia");


    return(

        <>

        <h3>token page</h3>

        </>

    )

}



Popular posts from this blog

MCSL 216 MCA NEW Practical ~ common questions suggestions

dev chaeatsheet

STRAPI