Autenticação de usuários
Nesta página
Visão geral
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.
Modificar o modelo de usuário
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.
Exemplo
O seguinte código mostra um arquivo User.php
que estende a classe MongoDB\Laravel\Auth\User
:
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', ]; }
Criar o Controlador de Usuário
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>
Exemplo
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:
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']); } }
Personalizar autenticação do usuário
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:
Laravel Sanctum
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:
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.
Lembretes de senha
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.
Exemplo
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 ];
Informações adicionais
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 .