Laravel Authentication: A Autenticação é o processo de verificar a identidade de um usuário, sendo um recurso obrigatório em qualquer aplicação web que gerencia dados sensíveis. O Laravel fornece um sistema de autenticação extremamente flexível e robusto, permitindo o uso de sessões (web guard) para aplicações tradicionais e tokens (api guard) para APIs stateless.
Este artigo foca na capacidade do Laravel de gerenciar o fluxo de autenticação manualmente e a integração com provedores externos (Autenticação Social).
1. 📝 Autenticação Manual de Usuários
O Laravel permite que você use a Facade Auth para gerenciar o estado de autenticação de forma granular, o que é útil para lógica de negócio personalizada (ex: verificar status de conta ou permissões antes do login).
A. Tentativa de Login
O método Auth::attempt() tenta autenticar o usuário com base em um array de credenciais (geralmente e-mail/usuário e senha). O Laravel cuida automaticamente da verificação do hash da senha.
PHP
use Illuminate\Support\Facades\Auth;
$credentials = request()->only('email', 'password');
if (Auth::attempt($credentials)) {
// A senha está correta e a sessão foi iniciada.
$user = Auth::user();
// Lógica de negócio adicional (ex: verificar status de conta)
if ($user->isSuspended()) {
Auth::logout(); // Deslogar se a conta estiver suspensa
return back()->withErrors(['email' => 'Sua conta está suspensa.']);
}
// Redireciona para o destino pretendido (rota para a qual o usuário tentava acessar)
return redirect()->intended('dashboard');
} else {
// Falha na autenticação (senha incorreta ou usuário não encontrado)
return back()->withErrors(['email' => 'As credenciais fornecidas são inválidas.']);
}
B. Logout Simples
Para encerrar a sessão do usuário, você deve chamar o método logout() e invalidar a sessão:
PHP
use Illuminate\Support\Facades\Auth;
Auth::logout();
// Invalida a sessão atual e regenera o token CSRF
request()->session()->invalidate();
request()->session()->regenerateToken();
return redirect('/');
2. 🔐 Autenticação Social com Laravel Socialite
O Laravel Socialite é um pacote oficial que simplifica a integração com provedores OAuth (Google, Facebook, GitHub, etc.) .
A. Configuração
Você deve registrar suas chaves de API no arquivo config/services.php:
PHP
// config/services.php
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URI'), // A URL de callback
],
B. Rotas e Controlador
O fluxo de autenticação social possui duas etapas de rota:
- Redirecionamento: Envia o usuário para o provedor externo.
- Callback: Recebe o usuário de volta após a autenticação no provedor.
| Rota | Ação | Função |
GET /auth/google | Inicia o processo | redirectToProvider() |
GET /auth/google/callback | Processa a resposta | handleProviderCallback() |
C. Lógica do Controlador
O método handleProviderCallback usa Socialite::driver('google')->user() para obter os dados do usuário do provedor (ID, nome, e-mail).
PHP
// App\Http\Controllers\Auth\GoogleController.php
use Laravel\Socialite\Facades\Socialite;
public function handleProviderCallback()
{
// Obtém a instância do usuário autenticado no Google
$socialUser = Socialite::driver('google')->user();
// Busca usuário existente pelo ID do provedor
$existingUser = User::where('google_id', $socialUser->id)->first();
if ($existingUser) {
// Loga o usuário existente
auth()->login($existingUser, true);
} else {
// Cria um novo usuário
$newUser = User::create([
'name' => $socialUser->name,
'email' => $socialUser->email,
'google_id' => $socialUser->id,
// A senha não é necessária neste fluxo
]);
auth()->login($newUser);
}
return redirect()->intended('/home');
}
3. 🛡️ Autenticação para APIs (Token)
Para APIs stateless (que não usam sessões), o Laravel utiliza Guards baseados em tokens.
Laravel Sanctum
O Laravel Sanctum é a solução padrão do Laravel para autenticação de API e SPA (Single Page Applications). Ele permite que os usuários obtenham tokens de acesso para autenticar requisições subsequentes.
Configuração:
- Instale o Sanctum e migre o banco de dados.
- Defina o
apiguard (ou um guard customizado) para usar o driversanctumno arquivoconfig/auth.php. - O cliente envia o token via cabeçalho HTTP:
Authorization: Bearer <seu_token>.
Geração de Token (Exemplo):
PHP
use Illuminate\Http\Request;
public function login(Request $request)
{
// 1. Autenticação normal (Auth::attempt)
if (Auth::attempt($request->only('email', 'password'))) {
$user = Auth::user();
// 2. Geração do token
$token = $user->createToken('auth-token')->plainTextToken;
return response()->json(['token' => $token]);
}
return response()->json(['message' => 'Credenciais inválidas'], 401);
}
✅ Conclusão Laravel Authentication
Laravel Authentication: O sistema de autenticação do Laravel é o pilar para a segurança da sua aplicação. Ele oferece controle total sobre o processo de login e logout (Auth::attempt), simplifica integrações complexas como a Autenticação Social via Socialite e fornece a estrutura moderna e stateless necessária para APIs e SPAs através do Laravel Sanctum.
Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:















