Authenticate API requests with Sanctum personal access tokens or SPA cookie-based auth.
Laravel Sanctum (API Auth)
composer require laravel/sanctum
php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"
php artisan migrate
// routes/api.php
Route::post("/login", [AuthController::class, "login"]);
Route::middleware("auth:sanctum")->group(function () {
Route::get("/me", fn(Request $r) => $r->user());
Route::post("/logout", [AuthController::class, "logout"]);
Route::apiResource("posts", PostController::class);
});
// AuthController
public function login(Request $request) {
$request->validate(["email"=>"required|email","password"=>"required"]);
if (!Auth::attempt($request->only("email","password"))) {
return response()->json(["message"=>"Invalid credentials"], 401);
}
$token = $request->user()->createToken("api")->plainTextToken;
return response()->json(["token" => $token]);
}
public function logout(Request $request) {
$request->user()->currentAccessToken()->delete();
return response()->json(["message" => "Logged out"]);
}