README.md

Аутентификация - Vue 3, JWT, Firebase, Pinia

Описание

Это приложение на Vue 3 с использованием Pinia для управления состоянием и Firebase Authentication для аутентификации пользователей. Приложение реализует регистрацию, вход и защищённый доступ к контенту (например, к списку автомобилей). Для хранения токенов используется localStorage, а для API-запросов — библиотека Axios с перехватчиками запросов и ответов.

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

Функционал

1. Аутентификация пользователей

  • Регистрация и вход через Firebase Authentication.
  • После успешной регистрации/входа токены пользователя (JWT) сохраняются в localStorage.
  • Для неаутентифицированных пользователей доступны только страницы регистрации и входа.
  • Если пользователь не аутентифицирован, при попытке зайти на защищённые страницы его перенаправляют на страницу входа.

2. Маршрутизация

  • Используется vue-router для организации маршрутов в приложении.
  • Защищённые маршруты: некоторые страницы доступны только для аутентифицированных пользователей (например, страница с автомобилями).
  • Переадресация:
    • Аутентифицированные пользователи перенаправляются на страницу автомобилей при попытке попасть на страницы регистрации или входа.
    • Неаутентифицированные пользователи перенаправляются на страницу входа, если пытаются перейти на защищённый маршрут.

3. API-запросы

  • Axios используется для отправки запросов к Firebase Realtime Database.
  • Реализованы перехватчики запросов и ответов:
    • Перехватчик запросов автоматически добавляет JWT в заголовок для всех запросов, кроме регистрации и входа.
    • Перехватчик ответов обновляет токен, если он истёк, и повторно отправляет запрос.
    • Если обновление токена не удалось, пользователь перенаправляется на страницу входа.

4. Управление состоянием

  • Pinia используется для управления состоянием аутентификации.
  • Состояние хранит данные пользователя (токен, email, ID и refreshToken).
  • Данные пользователя сбрасываются при выходе из системы, и токены удаляются из localStorage.

5. Компоненты

  • App.vue: Главный компонент приложения, содержащий навигационное меню и управляющий общими маршрутами.
  • SignUp.vue: Компонент регистрации с формой для ввода email и пароля.
  • SignIn.vue: Компонент входа с формой для ввода email и пароля.
  • Cars.vue: Компонент отображения списка автомобилей для аутентифицированных пользователей.
  • Loader.vue: Компонент для отображения загрузки.

Основные технологии

  • Vue 3: основа фронтенд-приложения.
  • Pinia: управление состоянием приложения.
  • Firebase: аутентификация пользователей и база данных.
  • Axios: для выполнения HTTP-запросов.
  • Vue Router: для маршрутизации.
  • PrimeVue: UI-компоненты для создания интерфейсов.

Установка и запуск

1. Клонирование репозитория

git clone https://github.com/your-repo/vue3-jwt-pinia.git
cd vue3-jwt-pinia

2. Установка зависимостей

npm install

3. Конфигурация Firebase

Создайте файл .env в корневой директории проекта и добавьте свои Firebase ключи:

VITE_API_KEY_FIREBASE=your_firebase_api_key

4. Запуск приложения

npm run dev

Структура проекта

├── src
│   ├── api.js             # Конфигурация Axios с перехватчиками
│   ├── main.js            # Главный файл приложения
│   ├── router
│   │   └── index.js       # Настройка маршрутизации
│   ├── stores
│   │   └── auth.js        # Pinia store для аутентификации
│   ├── views
│   │   ├── HomeView.vue   # Главная страница
│   │   ├── SignUp.vue     # Страница регистрации
│   │   ├── SignIn.vue     # Страница входа
│   │   ├── Cars.vue       # Страница списка автомобилей (только для аутентифицированных пользователей)
│   ├── components
│   │   └── Loader.vue     # Компонент загрузки
│   └── App.vue            # Главный компонент приложения
Описание

Аутентификация - Firebase, Pinia, JWT tokens

Конвейеры
0 успешных
0 с ошибкой