В современной веб-разработке создание безопасных и надежных API имеет решающее значение для обеспечения бесперебойного взаимодействия с пользователем. Laravel Sanctum, официальный пакет Laravel, предлагает простой, но мощный способ аутентификации API. В этой статье мы рассмотрим различные методы, предоставляемые Laravel Sanctum для аутентификации запросов API, а также приведем примеры кода.
- Токены личного доступа.
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');
- Аутентификация 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
});
- Аутентификация 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
});
- Отзыв токенов.
Laravel Sanctum предоставляет методы отзыва токенов, что полезно, когда пользователь выходит из системы или когда вы хотите сделать токен недействительным по соображениям безопасности.
use Illuminate\Support\Facades\Auth;
Auth::user()->tokens()->where('name', 'token-name')->delete();
В этой статье мы рассмотрели различные методы аутентификации, предоставляемые Laravel Sanctum для защиты конечных точек API. Мы рассмотрели токены личного доступа, аутентификацию SPA, аутентификацию на основе токенов и отзыв токенов. Используя возможности Laravel Sanctum, вы можете обеспечить безопасность и целостность ваших коммуникаций API.
Не забудьте реализовать соответствующий метод аутентификации в зависимости от требований вашего приложения и потребностей безопасности.