Menu Docs
Página inicial do Docs
/ / /
Laravel MongoDB

Autenticação de usuários

Nesta página

  • Visão geral
  • Modificar o modelo de usuário
  • Exemplo
  • Criar o Controlador de Usuário
  • Exemplo
  • Personalizar autenticação do usuário
  • Laravel Sanctum
  • Lembretes de senha
  • Informações adicionais

Neste guia, você aprenderá como autenticar usuários do MongoDB usando a funcionalidade de autenticação nativa do Laravel.

O Laravel fornece um Auth módulo nativo que inclui serviços de autenticação, como guardas que definem como os usuários são autenticados e fornecedores que definem como os usuários são recuperados. Para saber mais sobre estes serviços, consulte Autenticação do na documentação do Laravel.

Por padrão, o Laravel gera o modelo User Eloquent no seu diretório App/Models . Para habilitar a autenticação para usuários MongoDB, seu modelo User deve estender a classe MongoDB\Laravel\Auth\User .

Para estender essa classe, navegue até seu arquivo app/Models/User.php e substitua a declaração use Illuminate\Foundation\Auth\User as Authenticatable pelo seguinte código:

use MongoDB\Laravel\Auth\User as Authenticatable;

Em seguida, certifique-se de que sua classe User estenda Authenticatable, conforme mostrado no código a seguir:

class User extends Authenticatable
{
...
}

Após configurar seu modelo User , crie um controlador correspondente. Para saber como criar um controlador, consulte a seção Criar o controlador de usuário nesta página.

O seguinte código mostra um arquivo User.php que estende a classe MongoDB\Laravel\Auth\User :

<?php
namespace App\Models;
use MongoDB\Laravel\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $connection = 'mongodb';
protected $collection = 'users';
protected $fillable = [
'name',
'email',
'password',
];
protected $hidden = [
'password',
'remember_token',
];
}

Para armazenar funções que gerenciam autenticação, crie um controlador de autenticação para seu modelo User .

Execute o seguinte comando a partir da raiz do seu projeto para criar um controlador:

php artisan make:controller <filename>

O seguinte comando cria um arquivo de controlador denominado AuthController.php:

php artisan make:controller AuthController

O arquivo AuthController.php pode armazenar as funções login() e logout() para gerenciar a autenticação do usuário, conforme mostrado no código a seguir:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;
use function response;
class AuthController extends Controller
{
public function login(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
if (Auth::attempt($request->only('email', 'password'))) {
return response()->json([
'user' => Auth::user(),
'message' => 'Successfully logged in',
]);
}
throw ValidationException::withMessages([
'email' => ['The provided credentials are incorrect.'],
]);
}
public function logout()
{
Auth::logout();
return response()->json(['message' => 'Successfully logged out']);
}
}

Você pode personalizar seus arquivos de autenticação para se alinhar com as necessidades do seu aplicativo e habilitar recursos de autenticação adicionais.

Esta seção descreve como usar os seguintes recursos para personalizar o processo de autenticação de usuário do MongoDB:

O Laravel Sanctum é um pacote de autenticação que pode gerenciar solicitações de API e a autenticação de aplicativos de página única. Para gerenciar solicitações de API, o Sanctum emite tokens de API que são armazenados no banco de dados e autentica solicitações HTTP de entrada usando o cabeçalho Authorization . Para autenticar aplicativos de página única, o Sanctum usa os serviços de autenticação baseados em cookies do Laravel.

Você pode instalar o Laravel Sanctum para gerenciar o processo de autenticação do seu aplicativo. Execute os seguintes comandos a partir da raiz do seu projeto para instalar o Laravel Sanctum e publicar seu arquivo de migração:

composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Para utilizar o Laravel Sanctum com o Laravel MongoDB, modifique o PersonalAccessToken modelo fornecido pelo Sanctum para utilizar o DocumentModel traço do MongoDB\Laravel\Eloquent namespace . O seguinte código modifica o PersonalAccessToken modelo para habilitar o MongoDB:

<?php
namespace App\Models;
use Laravel\Sanctum\PersonalAccessToken as SanctumToken;
use MongoDB\Laravel\Eloquent\DocumentModel;
class PersonalAccessToken extends SanctumToken
{
use DocumentModel;
protected $connection = 'mongodb';
protected $collection = 'personal_access_tokens';
protected $primaryKey = '_id';
protected $keyType = 'string';
}

Em seguida, execute o seguinte comando para modificar o esquema do banco de dados:

php artisan migrate

Agora você pode instruir o Sanctum a usar o PersonalAccessToken modelo personalizado chamando o usePersonalAccessTokenModel() método em um dos provedores de serviços do seu aplicativo. Para saber mais, consulte Substituição de modelos padrão no guia do Laravel Sanctum.

Dica

Para saber mais sobre a traça DocumentModel , consulte Estender classes de modelo de terceiros no guia de classes de modelo Eloquent.

Para adicionar suporte a Lembretes de senha baseados no MongoDB, registre o seguinte provedor de serviços em seu aplicativo:

MongoDB\Laravel\Auth\PasswordResetServiceProvider::class

Este provedor de serviços modifica o DatabaseReminderRepository interno para habilitar avisos de senha.

O seguinte código atualiza o arquivo providers.php no diretório bootstrap de um aplicativo Laravel para registrar o fornecedor do PasswordResetServiceProvider :

return [
App\Providers\AppServiceProvider::class,
MongoDB\Laravel\MongoDBServiceProvider::class,
MongoDB\Laravel\Auth\PasswordResetServiceProvider::class
];

Para saber mais sobre autenticação de usuário, consulte Autenticação na documentação do Laravel.

Para saber mais sobre os modelos Eloquent, consulte o guia Classe de modelo Eloquent .

Voltar

Construtor de Query

Próximo

Cache e travas