Ao desenvolver uma API com Laravel, surge a dúvida: Laravel Sanctum ou Laravel Passport? Ambos são soluções poderosas para autenticação, mas atendem a necessidades diferentes. Neste artigo, vamos explorar as características de cada um para ajudá-lo a escolher a melhor opção para o seu projeto.
1. O que é Laravel Sanctum?
O Laravel Sanctum é uma solução leve para autenticação de APIs e Single Page Applications (SPAs). Ele fornece autenticação via tokens pessoais e cookies de sessão, sendo ideal para:
- APIs simples sem OAuth;
- Aplicações frontend que consomem uma API Laravel;
- Autenticação baseada em cookies para SPAs;
- Proteção de rotas para usuários autenticados;
- Controle de permissões simplificado.
Como instalar o Laravel Sanctum
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
Adicione o middleware ao Kernel.php
:
protected $middlewareGroups = [
'api' => [
\App\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
No modelo User.php
, adicione:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable {
use HasApiTokens, Notifiable;
}
Agora, podemos gerar tokens:
$token = $user->createToken('TokenName')->plainTextToken;
2. O que é Laravel Passport?
O Laravel Passport é uma implementação completa do OAuth2, ideal para aplicações que precisam de autenticação robusta e integração com terceiros.
Ele é indicado para:
- Aplicações que exigem OAuth 2.0;
- APIs públicas ou de grande escala;
- Autenticação via JWT;
- Controle avançado de escopos e permissões de usuário.
Como instalar o Laravel Passport
composer require laravel/passport
php artisan migrate
php artisan passport:install
Registre o Passport::routes()
no AuthServiceProvider.php
:
use Laravel\Passport\Passport;
public function boot()
{
Passport::routes();
}
No modelo User.php
, adicione:
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable {
use HasApiTokens, Notifiable;
}
Agora, para autenticação via OAuth:
POST /oauth/token
3. Comparação: Sanctum vs. Passport
Recurso | Laravel Sanctum | Laravel Passport |
---|---|---|
Autenticação via Token Pessoal | ✅ Sim | ✅ Sim |
Autenticação via OAuth 2.0 | ❌ Não | ✅ Sim |
Ideal para APIs Simples | ✅ Sim | ❌ Não |
Integração com Terceiros | ❌ Não | ✅ Sim |
Autenticação via Cookies | ✅ Sim | ❌ Não |
Uso de JWT | ❌ Não | ✅ Sim |
Controle Avançado de Escopos | ❌ Não | ✅ Sim |
4. Quando usar cada um?
Use Laravel Sanctum se:
- Sua API será consumida por um frontend próprio (React, Vue, etc.).
- Você precisa de autenticação baseada em tokens simples.
- Quer uma solução leve e rápida.
- Não precisa de OAuth 2.0.
Use Laravel Passport se:
- Sua API será acessada por terceiros.
- Precisa de OAuth 2.0 e controle avançado de permissões.
- Quer suporte a autenticação JWT.
- Sua aplicação exige escopos e tokens de longa duração.
5. Conclusão e Próximos Passos
A escolha entre Sanctum e Passport depende das necessidades da sua aplicação. Se precisa de uma autenticação simples e eficiente, vá de Sanctum. Se precisa de OAuth e autenticação avançada, escolha Passport.
🔍 Quer aprender mais sobre segurança e autenticação em Laravel? Explore nossa biblioteca de conteúdos e domine o desenvolvimento de APIs seguras e escaláveis.
📢 Agora é sua vez! Qual solução você prefere usar em seus projetos Laravel? Deixe um comentário abaixo ou compartilhe este artigo com sua equipe!