Приватные роуты в React

В современных веб-приложениях обеспечение конфиденциальности и безопасности определенных маршрутов является решающим аспектом. Мы не хотим, чтобы каждый имел доступ ко всем частям нашего веб-приложения. Для этого мы используем приватные маршруты, предоставляемые маршрутизатором React v6. В этой статье мы разберемся, что такое приватные маршруты, и реализуем их в примере приложения!

Что такое приватный и публичный роут?

Публичные маршруты — это маршруты, доступные любому пользователю. Для доступа к ним не требуется аутентификация.

С другой стороны, приватные маршруты доступны только аутентифицированным пользователям. Они требуют, чтобы пользователь вошел в систему для доступа к маршруту.

Реализация приватного роута

В этом разделе мы реализуем приватные роуты в простом проекте React! Для этого мы будем использовать Outlet компонент, предоставленный React Router 6. Это похоже на контейнер, содержащий различные части/компоненты нашей веб-страницы.

С помощью Outlet мы можем создать несколько небольших участков или «подмаршрутов» в пределах одного основного маршрута.

Теперь мы создадим PrivateRoutes.jsx файл в папке utils. Он проверяет, аутентифицирован ли пользователь или нет, прежде чем отображать защищенные/приватные роуты!

Вот код для этого:

//utils/PrivateRoutes.jsx
import { Outlet, Navigate } from 'react-router-dom'

const PrivateRoutes = () => {
    const user = false; // Replace with your authentication logic

    return user ? <Outlet/> : <Navigate to="/login"/>
}

Здесь, если пользователь аутентифицирован, он будет отображать приватные компоненты, используя <Outlet /> компонент, в противном случае он перейдет к /Login маршруту!

Примечание. Измените const user = false; деталь в соответствии с вашим проектом. В этом примере мы используем статическое значение, то есть False!

Теперь мы завершим настройку маршрутизации, используя App.jsx созданные ранее приватные компоненты!

Вот код для этого:

import PrivateRoutes from './utils/PrivateRoutes'

function App() {
return (
    <Router>
        <Routes>
            <Route path="/login" element={<Login/>}/>
            <Route path="/register" element={<Register/>}/>

            <Route element={<PrivateRoutes />}>
                <Route path="/" element={<Home/>}/>
                <Route path="/profile" element={<Profile/>}/>
            </Route>

        </Routes>
    </Router>
    );
}

Здесь мы поместили компоненты <Home /> и <Profile /> в приватные маршруты. Пользователь должен войти в систему, чтобы получить доступ к компоненту Home & profile.

Заключение

Если эта запись в блоге оказалась для вас полезной, поделитесь ею с теми, кому это может быть полезно. Спасибо за прочтение.