Для того чтобы реализовать одновременную работу веб-авторизации и API-авторизации в Laravel, вам понадобится применить несколько шагов.
1. Установите Laravel:
В первую очередь, убедитесь, что на вашей системе установлен PHP и Composer. Затем выполните команду в терминале для создания нового проекта Laravel:
composer create-project --prefer-dist laravel/laravel
2. Настройка маршрутов:
Laravel предоставляет мощный механизм маршрутизации для определения путей запросов в вашем приложении. Вам понадобится определить отдельные группы маршрутов для веб-авторизации и API-авторизации.
Для веб-авторизации вы можете использовать маршруты, предоставленные Laravel по умолчанию, в файле routes/web.php
. Пример маршрутов:
// Маршруты для веб-авторизации Route::get('/login', 'AuthController@showLoginForm'); Route::post('/login', 'AuthController@login'); Route::post('/logout', 'AuthController@logout');
Для API-авторизации вы можете использовать маршруты в файле routes/api.php
. Пример маршрутов:
// Маршруты для API-авторизации Route::post('/login', 'AuthController@login'); Route::post('/logout', 'AuthController@logout'); // Другие маршруты API
3. Создание контроллера:
Создайте контроллер AuthController
, который будет содержать методы для аутентификации и выхода из системы. Вы можете использовать генератор контроллеров Laravel для этого:
php artisan make:controller AuthController
Пример реализации методов login
и logout
в AuthController
:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesAuth; class AuthController extends Controller { public function login(Request $request) { // Валидация запроса $request->validate([ 'email' => 'required|email', 'password' => 'required', ]); // Аутентификация пользователя if (Auth::attempt($request->only('email', 'password'))) { return response()->json(['message' => 'Аутентификация прошла успешно']); } return response()->json(['message' => 'Ошибка аутентификации'], 401); } public function logout() { Auth::logout(); return response()->json(['message' => 'Выход выполнен']); } }
4. Примените маршруты и контроллер в приложении:
В файле routes/web.php
сделайте импорт контроллера и примените маршруты:
use AppHttpControllersAuthController; // Маршруты для веб-авторизации Route::get('/login', [AuthController::class, 'showLoginForm']); Route::post('/login', [AuthController::class, 'login']); Route::post('/logout', [AuthController::class, 'logout']);
В файле routes/api.php
также примените маршруты:
use AppHttpControllersAuthController; // Маршруты для API-авторизации Route::post('/login', [AuthController::class, 'login']); Route::post('/logout', [AuthController::class, 'logout']);
5. Настройте мидлвары:
Чтобы включить аутентификацию в вашем приложении, убедитесь, что мидлвар auth
назначен в файле app/Http/Kernel.php
. Если вы хотите использовать аутентификацию только для определенных маршрутов, вы можете назначить его в соответствующей группе маршрутов.
Пример использования мидлвара auth
для группы маршрутов в файле routes/web.php
:
// Группа маршрутов для веб-авторизации Route::middleware('auth')->group(function () { // Защищенные маршруты });
Пример использования мидлвара auth
для группы маршрутов в файле routes/api.php
:
// Группа маршрутов для API-авторизации Route::middleware('auth:api')->group(function () { // Защищенные маршруты });
6. Настройка клиентских приложений:
Если вы планируете использовать API-авторизацию с помощью токенов, необходимо настроить клиентские приложения для отправки токена аутентификации в заголовке каждого запроса к API.
Пример использования токена аутентификации в клиентском приложении (JavaScript):
// Получение токена аутентификации во время входа в систему axios.post('/login', { email: '[email protected]', password: 'password123', }).then(response => { const token = response.data.token; // Полученный токен // Отправка токена в заголовке каждого запроса к API axios.get('/api/protected-route', { headers: { 'Authorization': `Bearer ${token}`, }, }).then(response => { console.log(response.data); // Данные защищенного маршрута API }).catch(error => { console.error(error); }); }).catch(error => { console.error(error); });
Обратите внимание, что вы должны настроить аутентификацию API и генерацию токенов в файле config/auth.php
.
Вот и все! Теперь у вас должны работать и веб-авторизация и API-авторизация в Laravel. Вы можете настроить и дополнительную конфигурацию, такую как различные способы аутентификации, роли и разрешения, но основная концепция остается такой же.