Laravel Sanctum provides lightweight API token authentication for SPAs, mobile apps, and simple token-based APIs.
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
use App\Models\User;
use Illuminate\Http\Request;
// Login endpoint
Route::post('/tokens/create', function (Request $request) {
$request->validate(['email' => 'required|email', 'password' => 'required']);
$user = User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
return response()->json(['message' => 'Invalid credentials'], 401);
}
$token = $user->createToken('api-token', ['read', 'write'])->plainTextToken;
return response()->json(['token' => $token]);
});
// routes/api.php
Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', fn (Request $request) => $request->user());
Route::apiResource('posts', PostController::class);
});
// Revoke the current token
$request->user()->currentAccessToken()->delete();
// Revoke all tokens (logout from all devices)
$request->user()->tokens()->delete();