Do not speak Portuguese? Translate this site with Google or Bing Translator
Laravel Passport – Criar API REST com autenticação

Posted on: July 27, 2022 03:14 PM

Posted by: Renato

Views: 106

Laravel Passport – Criar API REST com autenticação

Neste tutorial, veremos como usar a autenticação de passaporte laravel em seu aplicativo Laravel. Também construiremos um CRUD de Produto simples (Criar, Ler, Atualizar e Excluir) usando a Autenticação Laravel Passport .

O Laravel já fornece autenticação de formulários de login tradicionais, mas e se você quiser usar APIs? As APIs usam tokens para autenticar usuários, pois não usam sessões. Quando um usuário faz login via API, um token é gerado e enviado ao usuário que é usado para fins de autenticação. O Laravel fornece o Passport para trabalhar com API Authentication sem nenhuma dificuldade.

Vamos ver como configurar e configurar o Laravel Passport para autenticação de API e APIs RESTful em um aplicativo Laravel.

Criando um novo projeto

Vamos começar criando um novo projeto Laravel. Execute o seguinte comando para criar um novo projeto.

 

composer create-project --prefer-dist laravel/laravel passport

 

Instalar pacote

Precisamos instalar o pacote Laravel Passport através do gerenciador de dependências do compositor. Execute o comando a seguir para exigir o pacote.

composer require laravel/passport

 

Adicionando Passaporte Laravel

O Laravel Passport requer algumas etapas para ser configurado corretamente.

Provedor de serviço

Estou usando o Laravel 5.6, que é a versão mais recente do laravel no momento, que registra automaticamente o pacote usando a descoberta automática de pacotes. Se você estiver usando laravel 5.4 ou inferior , você precisa adicionar Service Provider no arquivo config/app.php . Portanto, abra o arquivo e adicione o Service Provider na matriz de provedores .

1
2
3
4
'providers' => [
    ....
    Laravel\Passport\PassportServiceProvider::class,
]

Migração e instalação

Configure as credenciais do banco de dados no arquivo .env . O Laravel Passport vem com migração para tabelas de passaporte que precisam estar em nosso banco de dados. As Migrações do Passport são usadas para armazenar tokens e informações do cliente. Execute o comando migration para migrar esquemas para seu banco de dados.

 

php artisan migrate

 

Em seguida, é necessário instalar o passaporte usando o comando abaixo. Ele gerará as chaves de criptografia necessárias para gerar tokens de acesso secretos.

Configurar passaporte

Nesta etapa, precisamos fazer alterações em nosso aplicativo Laravel para concluir a configuração do passaporte.

app/User.php

Adicione o trait Laravel\Passport\HasApiTokens ao seu modelo de usuário . Ele fornecerá alguns métodos auxiliares.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
 
namespace App;
 
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;
 
class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
 
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];
 
    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

AuthServiceProvider

Adicione Passport::routeso método no método de inicialização do seu AuthServiceProvider . Ele irá gerar as rotas necessárias. É assim que o app/Providers/AuthServiceProvider.php ficará após as alterações.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
 
namespace App\Providers;
 
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Passport\Passport;
 
class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];
 
    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
 
        Passport::routes();
    }
}

config/auth.php

No arquivo config/auth.php , defina o driver para o passaporte.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
return [
    ....
 
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
 
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ],
 
    ....
]

Criar rota

Vamos criar rotas de API. Adicione rotas no arquivo routes/api.php .

1
2
3
4
5
6
7
8
Route::post('login', '[email protected]');
Route::post('register', '[email protected]');
 
Route::middleware('auth:api')->group(function () {
    Route::get('user', '[email protected]');
 
    Route::resource('products', 'ProductController');
});

Criar controlador para autenticação

Vamos configurar nossa lógica para Autenticação. Crie o Passport Controller executando o comando a seguir.

 

 

php artisan make:controller PassportController

 

Copie o conteúdo abaixo para app/Http/Controllers/PassportController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55