When using Laravel Jetstream, it indeed comes with Laravel Sanctum for API token management by default. However, if you are already using Laravel Passport for OAuth2.0, you might not need Sanctum. Here’s how you can handle this situation:
-
Remove Sanctum: If you are sure that you do not need Sanctum, you can remove it from your project. This involves several steps:
-
Remove Sanctum Package:
composer remove laravel/sanctum -
Remove Sanctum Service Provider: Open
config/app.phpand remove the Sanctum service provider from theprovidersarray:// Remove this line Laravel\Sanctum\SanctumServiceProvider::class, -
Remove Sanctum Middleware: Open
app/Http/Kernel.phpand remove the Sanctum middleware from theapimiddleware group:// Remove this line from the 'api' middleware group \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, -
Remove Sanctum Configuration File: Delete the
config/sanctum.phpfile if it exists.
-
-
Ensure Jetstream Works Without Sanctum: Jetstream uses Sanctum for session-based authentication and API token management. If you are not using these features, you can safely remove Sanctum. However, if you are using Jetstream's features like session-based authentication, you might need to adjust your setup.
-
Use Passport for API Authentication: Since you are using Passport, ensure that your API routes are protected using Passport's middleware. For example, in your
routes/api.php:Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); -
Update User Model: Ensure your
Usermodel uses theHasApiTokenstrait from Passport:use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; // Other model methods and properties } -
Configure Passport: Ensure Passport is properly configured in your
AuthServiceProvider:use Laravel\Passport\Passport; class AuthServiceProvider extends ServiceProvider { public function boot() { $this->registerPolicies(); Passport::routes(); } }
By following these steps, you can remove Sanctum and rely solely on Passport for your OAuth2.0 needs while still using Jetstream for other features. Make sure to thoroughly test your application to ensure that removing Sanctum does not break any functionality you rely on.