Laravel Sanctum предлагает простой и легкий способ аутентификации API в вашем Laravel-приложении. Он предоставляет систему аутентификации, которая поддерживает токены API, а также предоставляет простой способ аутентификации SPA (Single Page Application) и мобильных приложений. В этом руководстве мы рассмотрим, как настроить и использовать Laravel Sanctum для аутентификации API.
1. Установка Laravel Sanctum
Для начала убедитесь, что у вас установлен Laravel и Composer. Создайте новый проект Laravel, если у вас его еще нет:
composer create-project --prefer-dist laravel/laravel sanctum-example
Перейдите в директорию проекта:
cd sanctum-example
Установите Laravel Sanctum через Composer:
composer require laravel/sanctum
2. Настройка Sanctum
После установки Sanctum, выполните команду миграции для создания необходимых таблиц в базе данных:
php artisan migrate
Затем, запустите команду установки Sanctum:
php artisan sanctum:install
Эта команда создаст конфигурационный файл sanctum.php
в директории config
, а также добавит трейт Laravel\Sanctum\HasApiTokens
в модель User
.
3. Настройка модели User
Добавьте трейт HasApiTokens
в модель User
:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
4. Настройка маршрутов
В routes/api.php
добавьте маршруты для регистрации, входа в систему и получения токена доступа:
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\Auth\LoginController;
Route::post('/register', [RegisterController::class, 'register']);
Route::post('/login', [LoginController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', function (Request $request) {
return $request->user();
});
});
5. Создание контроллеров
Создайте контроллеры для регистрации и входа в систему:
php artisan make:controller Auth/RegisterController
php artisan make:controller Auth/LoginController
В RegisterController
добавьте метод для регистрации:
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class RegisterController extends Controller
{
public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:8|confirmed',
]);
$user = User::create([
'name' => $validatedData['name'],
'email' => $validatedData['email'],
'password' => Hash::make($validatedData['password']),
]);
return response()->json(['message' => 'User registered successfully']);
}
}
В LoginController
добавьте методы для входа в систему и получения токена доступа:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (!Auth::attempt($credentials)) {
return response()->json(['message' => 'Invalid credentials'], 401);
}
$token = Auth::user()->createToken('MyApp')->plainTextToken;
return response()->json(['token' => $token]);
}
}
6. Тестирование аутентификации
Используйте инструменты, такие как Postman или Insomnia, для тестирования аутентификации. Вы можете зарегистрировать нового пользователя, войти в систему и получить токен доступа, используя созданные маршруты.
Заключение
Laravel Sanctum предоставляет удобный и мощный способ реализации аутентификации API в вашем Laravel-приложении. Это позволяет легко интегрировать аутентификацию через API, обеспечивая безопасный доступ к вашим ресурсам. Для более глубокого погружения в Laravel Sanctum рекомендуется изучить официальную документацию.
0 комментариев