Этот проект демонстрирует реализацию авторизации между Nuxt.js фронтендом и Laravel бэкендом с использованием Laravel Sanctum.
mz/
├── main/ # Laravel бэкенд (основной сервис)
├── nuxt/ # Nuxt.js фронтенд
├── discogs/ # Laravel бэкенд для сервиса дискографии
├── docker/ # Dockerfile'ы и конфиги nginx/php/postgres/nuxt
├── docs/ # Документация (api, deployment, testing, frontend, database, business)
├── scripts/ # Вспомогательные скрипты разработки (dev-tests/)
└── old/ # Устаревший Yii проект — не трогать
📚 Документация: вся документация централизована в docs/ — API, deployment, testing, architecture.
cd main
composer installСоздайте файл .env на основе .env.example и настройте подключение к базе данных:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_passwordphp artisan migrate
php artisan db:seedФайл config/cors.php уже настроен для работы с Nuxt.js:
'allowed_origins' => [
'http://localhost:3000',
'http://127.0.0.1:3000',
'http://localhost:3001',
'http://127.0.0.1:3001',
],
'supports_credentials' => true,Файл config/sanctum.php настроен для работы с SPA:
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,localhost:3001,127.0.0.1,127.0.0.1:8000,127.0.0.1:3000,127.0.0.1:3001,::1',
Sanctum::currentApplicationUrlWithPort(),
))),php artisan serve --host=0.0.0.0 --port=8000cd nuxt
npm installСоздайте файл .env в папке nuxt:
BACKEND_BASE_URL=http://localhost:8000Файл nuxt.config.ts уже настроен:
export default defineNuxtConfig({
runtimeConfig: {
apiBaseUrl: process.env.DISCOGS_BASE_URL || 'http://localhost:8000',
apiToken: process.env.DISCOGS_API_TOKEN || 'mbrainz-FSzz-3333',
},
sanctum: {
baseUrl: process.env.BACKEND_BASE_URL || 'http://localhost:8000',
},
modules: [
'nuxt-headlessui',
'@nuxt/ui',
'@nuxt/test-utils',
'@nuxt/image',
'@nuxt/icon',
'@nuxt/content',
'@nuxt/eslint',
'@nuxt/fonts',
'@nuxt/scripts',
'@vueuse/nuxt',
'nuxt-auth-sanctum'
]
})npm run dev- Регистрация пользователей с подтверждением по SMS
- Вход в систему по email и паролю
- Защищенные маршруты с middleware
- Управление сессиями через Laravel Sanctum
- Автоматическая инициализация авторизации при загрузке приложения
POST /api/auth/register/send-code- Отправка кода для регистрацииPOST /api/auth/register/verify- Подтверждение регистрацииPOST /api/auth/login- Вход в системуGET /api/auth/me- Получение информации о пользователеPOST /api/auth/logout- Выход из системыGET /sanctum/csrf-cookie- Получение CSRF токена
/api/auth/login- Прокси для входа/api/auth/me- Прокси для получения пользователя/api/auth/logout- Прокси для выхода/api/auth/csrf- Прокси для CSRF токена
Форма входа с валидацией и обработкой ошибок.
Форма регистрации с валидацией всех полей.
Форма подтверждения регистрации по SMS коду.
Заголовок с навигацией и кнопкой выхода.
Защищает маршруты, требующие авторизации. Перенаправляет на /login если пользователь не авторизован.
Защищает гостевые маршруты. Перенаправляет на / если пользователь уже авторизован.
Основной composable для работы с авторизацией:
const {
user,
isAuthenticated,
isLoading,
error,
login,
register,
verifyRegistration,
fetchUser,
logout,
init
} = useAuth()/- Главная страница с приветствием/login- Страница входа/register- Страница регистрации/profile- Защищенная страница профиля
- CSRF защита - автоматическое получение CSRF токенов
- Валидация данных - на фронтенде и бэкенде
- Безопасные токены - Laravel Sanctum
- CORS настройки - только разрешенные домены
- Хеширование паролей - bcrypt
- Запустите Laravel сервер:
php artisan serve - Запустите Nuxt сервер:
npm run dev - Откройте http://localhost:3000
- Попробуйте зарегистрироваться и войти в систему
Для полной функциональности можно добавить:
- Восстановление пароля по SMS
- Верификация email
- Двухфакторная аутентификация
- Социальная авторизация (Google, Facebook)
- Управление профилем пользователя
- История сессий и их управление