Laravel Authentication

Laravel
Tempo de leitura: 4 minutos

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:

  1. Redirecionamento: Envia o usuário para o provedor externo.
  2. Callback: Recebe o usuário de volta após a autenticação no provedor.
RotaAçãoFunção
GET /auth/googleInicia o processoredirectToProvider()
GET /auth/google/callbackProcessa a respostahandleProviderCallback()

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:

  1. Instale o Sanctum e migre o banco de dados.
  2. Defina o api guard (ou um guard customizado) para usar o driver sanctum no arquivo config/auth.php.
  3. 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:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

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:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.