Изучение Laravel Sanctum API: полное руководство по методам аутентификации

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

  1. Токены личного доступа.
    Laravel Sanctum позволяет создавать токены личного доступа, которые представляют собой долгосрочные токены, связанные с учетной записью пользователя. Эти токены можно использовать для аутентификации запросов API.
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
Route::post('/token', function (Request $request) {
    $user = User::where('email', $request->email)->first();
    if (!$user || !Hash::check($request->password, $user->password)) {
        return response()->json(['error' => 'Invalid credentials'], 401);
    }
    $token = $user->createToken('token-name')->plainTextToken;
    return response()->json(['token' => $token]);
})->name('token');
  1. Аутентификация SPA (одностраничное приложение):
    Если вы создаете SPA, вы можете использовать Laravel Sanctum для аутентификации запросов API с использованием встроенной аутентификации сеанса Laravel. Этот метод полезен, когда ваши SPA и API используют один и тот же домен.
// In your Laravel route file
Route::middleware('auth:sanctum')->get('/api/user', function (Request $request) {
    return $request->user();
});
// In your Vue or React component
axios.get('/api/user', { withCredentials: true })
    .then(response => {
        // Handle user data
    })
    .catch(error => {
        // Handle error
    });
  1. Аутентификация API на основе токенов.
    Laravel Sanctum также поддерживает аутентификацию на основе токенов, что полезно, когда ваш интерфейс и серверная часть разделены или при использовании мобильных приложений. Токены можно передавать в заголовке Authorizationс префиксом Bearer.
// In your Laravel route file
Route::middleware('auth:sanctum')->get('/api/user', function (Request $request) {
    return $request->user();
});
// In your API client
axios.get('/api/user', {
    headers: {
        'Authorization': 'Bearer ' + token,
    },
})
    .then(response => {
        // Handle user data
    })
    .catch(error => {
        // Handle error
    });
  1. Отзыв токенов.
    Laravel Sanctum предоставляет методы отзыва токенов, что полезно, когда пользователь выходит из системы или когда вы хотите сделать токен недействительным по соображениям безопасности.
use Illuminate\Support\Facades\Auth;
Auth::user()->tokens()->where('name', 'token-name')->delete();

В этой статье мы рассмотрели различные методы аутентификации, предоставляемые Laravel Sanctum для защиты конечных точек API. Мы рассмотрели токены личного доступа, аутентификацию SPA, аутентификацию на основе токенов и отзыв токенов. Используя возможности Laravel Sanctum, вы можете обеспечить безопасность и целостность ваших коммуникаций API.

Не забудьте реализовать соответствующий метод аутентификации в зависимости от требований вашего приложения и потребностей безопасности.