Tutorial de passaporte Laravel

Tutorial de passaporte Laravel
Vários recursos de autenticação são implementados no Laravel versão 5.2. Diferentes sistemas de autenticação são necessários para implementar diferentes rotas que demoravam muito tempo e ineficientes. O mesmo sistema de autenticação pode ser usado para Rede e API Usando um recurso de autenticação baseado em token. Mas este sistema de autenticação não é mais seguro para o aplicativo. Agora, o sistema de autenticação do aplicativo Laravel pode ser protegido usando o novo Passaporte Recurso de autenticação de Laravel. Ele usa dois Env, que são os segredos da API do Laravel Passport Oauth. Estes são API_CLIENT_ID & API_CLIENT_SECRET. Um token de acesso gera para cada usuário quando o passaporte do Laravel é usado e permite ao usuário acessar alguns terminais seguros. Como você pode construir um sistema de autenticação de API seguro usando passaporte Laravel e acesso autorizado é mostrado neste tutorial.

Vantagens de usar o passaporte Laravel:

O protocolo OAuth2 pode ser integrado ao aplicativo Laravel usando a senha do Laravel. Quando o usuário deseja recuperar ou inserir dados do aplicativo, a solicitação de acesso será enviada por este protocolo. A permissão será dada ao usuário, autorizando o usuário para acesso. Alguns grandes benefícios da autenticação de passaporte são mencionados abaixo.

  • A autenticação do passaporte é melhor que a autenticação padrão do Laravel, pois pode ser usada para o site externo também.
  • A autenticação normal da API pode ser usada para acessar o conteúdo do site do Laravel apenas onde é implementado. Mas o site externo pode acessar o conteúdo do site da Laravel com a permissão do usuário autenticado e do token.

Pré -requisitos:

Você tem que realizar a seguinte tarefa antes de instalar e usar o passaporte do Laravel para autenticação do usuário.

  • Instale um novo projeto de Laravel
  • Configuração do banco de dados Connection

Instale o passaporte Laravel:

Execute o seguinte comando do terminal para instalar o pacote de passaporte Laravel usando o compositor.

$ compositor requer laravel/passaporte

Você precisará para criar o Usuários tabela no banco de dados antes de instalar o pacote de passaporte. Três arquivos de migração e um Do utilizador O modelo foi gerado automaticamente quando um novo projeto de Laravel cria. Um deles é usado para criar um Usuários mesa. Vá para a pasta do projeto Laravel e execute o seguinte comando migrar para criar o Usuários mesa.

$ php artesan migrar

Execute o seguinte comando para instalar o pacote de passaporte para o projeto.

$ PHP PASSAPORTE ARTISANO: Instale

Você receberá as seguintes informações depois de instalar o passaporte do Laravel com sucesso em seu projeto. Aqui, duas chaves secretas são geradas. Um para cliente de acesso pessoal e outro para cliente de concessão de senha.

Configuração do passaporte Laravel:

Abra o Do utilizador modelo que está localizado no local, App \ Model.php de um editor e modifique o modelo como abaixo. Adicionar Laravel \ Passport \ Hasapitokens no início da classe e use hasapitokens e notificável dentro da classe.

App de espaço para nome;
use iluminado \ contratos \ auth \ mustVerifyEmail;
Use Illuminate \ Foundation \ Auth \ User como autenticável;
use iluminado \ notificações \ notificável;
// adicionado aqui
Use o Laravel \ Passport \ Hasapitokens;
O usuário da classe se estende autenticável

// modificado aqui
use hasapitokens, notificável;
/**
* Os atributos que são atribuíveis em massa.
*
* Array @var
*/
$ preenchável protegido = [
'Nome', 'email', 'senha',
];
/**
* Os atributos que devem estar ocultos para matrizes.
*
* Array @var
*/
$ hidden protegido = [
'Senha', 'Remember_token',
];
/**
* Os atributos que devem ser lançados para tipos nativos.
*
* Array @var
*/
$ casts protegidos = [
'Email_verifed_at' => 'DateTime',
];

Em seguida, aberto App/Provedores/AuthServiceProvider.php Para registrar as rotas necessárias para emitir e revogar os tokens de acesso. Passport :: Rotas O método é chamado dentro do método de inicialização de AuthServiceProvider. Modifique o conteúdo do arquivo mostrado abaixo.

provedores de aplicativos de espaço para nome;
Use Illuminate \ Foundation \ Support \ Provedores \ AuthServiceProvider como ServiceProvider;
use iluminado \ support \ fachades \ gate;
// passaporte é adicionado aqui
Use o Laravel \ Passport \ Passport;
Classe AuthServiceProvider estende o ServiceProvider

/** Os mapeamentos de políticas para o aplicativo.
*
* Array @var
*/
Políticas $ protegidos = [
'App \ Model' => 'App \ Políticas \ ModelPolicy',
];
/**
* Registre quaisquer serviços de autenticação / autorização.
*
* @return void
*/
Public Function Boot ()

$ this-> registerpolicies ();
Passaporte :: rotas ();
Passaporte :: tokensexpirein (agora ()-> addDays (15));
Passaporte :: refreshtokensexpirein (agora ()-> addDays (30));

Em seguida, aberto Config \ app.php e insira a seguinte linha no provedores Array para incluir a classe necessária para o uso de passaporte de Laravel.

Laravel \ Passport \ PassportServiceProvider :: Classe,

Em seguida, aberto Config \ Auth.php e defina o motorista da API para Passaporte no guardas matriz mostrada abaixo.

'Guardas' => [
'web' => [
'Driver' => 'Session',
'provedor' => 'usuários',
],
'API' => [
'Driver' => 'passaporte',
'provedor' => 'usuários',
'hash' => false,
],
],

Implementar controlador para registro e autenticação:

Você precisa criar um controlador para implementar o sistema de autenticação usando o pacote de passaporte. Execute o seguinte comando da pasta raiz do projeto para criar Apicontroller.

$ php artesan make: controller apicontroller

Na próxima parte deste tutorial, três métodos são adicionados dentro do Apicontroller Para criar um novo usuário, autentique um usuário e obtenha as informações detalhadas de um usuário autenticado.

A. Registro

Um novo usuário pode ser criado no Usuários tabela implementando um registro() método. Adicione o seguinte código dentro do Apicontroller Para implementar a API Register. Os valores de campo necessários para criar um novo usuário são recuperados pelo argumento, $ solicitação do método registro(). Validador A classe é usada para verificar se os valores do campo são válidos ou não baseados nas regras de validação definidas. Se o falha () O método retorna true, então ele retornará uma mensagem de erro no formato json. Se o falha () O método retorna false, então uma senha de hash gerará e novas informações do usuário serão inseridas na tabela de usuários. Um token será gerado após a criação do novo usuário e uma mensagem de sucesso com valor de token será retornada.

Registro de funções públicas (solicitação $ solicitação)

/** Validar os dados usando regras de validação
*/
$ validator = validator :: make ($ request-> all (), [
'Nome' => 'Necessário',
'Email' => 'Necessário | Email',
'Senha' => 'Necessário',
]);
/** Verifique se a validação se torna falha ou não
*/
if ($ validator-> fails ())
/** Mensagem de erro de retorno
*/
RETORNO DE RETORNO ()-> JSON (['erro' => $ validator-> erros ()]);

/** Armazene todos os valores dos campos
*/
$ newUser = $ request-> all ();
/** Crie uma senha criptografada usando o hash
*/
$ newUser ['senha'] = hash :: make ($ newUser ['senha']);
/** Insira um novo usuário na tabela
*/
$ user = user :: create ($ newUser);
/** Crie um token de acesso para o usuário
*/
$ sucesso ['token'] = $ user-> createToken ('AppName')-> accessToken;
/** Retorne a mensagem de sucesso com o valor do token
*/
resposta de retorno ()-> json (['sucesso' => $ success], 200);

B. Conecte-se:

Qualquer usuário pode ser autenticado implementando o login () método. Adicione o seguinte código dentro Apicontroller Para implementar uma API de login. Os campos necessários para autenticar um usuário são recuperados do $ solicitação de o login () método. tentar() Método verificará os valores de e-mail e senha para a autenticação. Se os valores correspondem aos valores do Usuários Tabela então o registro desse usuário em particular será recuperado e um valor de token será retornado. Se a autenticação falhar, então um Não autorizado Mensagem será devolvida.

Função pública Login (solicitação $ solicitação)

/** Leia as credenciais passadas pelo usuário
*/
$ credenciais = [
'Email' => $ request-> email,
'Senha' => $ request-> Senha
];
/** Verifique se as credenciais são válidas ou não
*/
if (auth ()-> tentativa ($ credenciais))
/** Armazene as informações do usuário autenticado
*/
$ user = auth :: user ();
/** Crie token para o usuário autenticado
*/
$ sucesso ['token'] = $ user-> createToken ('AppName')-> accessToken;
resposta de retorno ()-> json (['sucesso' => $ success], 200);
outro
/** Mensagem de erro de retorno
*/
RETORNO DE RETORNO ()-> JSON (['erro' => 'não autorizado'], 401);

C. Detalhes do usuário

Você pode obter as informações detalhadas de qualquer usuário após a autenticação implementando a API do usuário. Adicione o seguinte código ao Apicontroller Para recuperar as informações detalhadas de qualquer usuário autenticado.

função pública user_info ()

/** Recupere as informações do usuário autenticado
*/
$ user = auth :: user ();
/** Retorne os detalhes do usuário
*/
resposta de retorno ()-> json (['sucesso' => $ user], 200);

Rota da API para o controlador:

Abra o rotas \ app.php Arquive e modifique o conteúdo com os seguintes códigos para definir a rota de login, registrar a rota e detalhes da rota para serviços de API.

/** Rota para API de login*/
Rota :: post ('login', 'apicontroller@login');
/** rota para registro API*/
Route :: Post ('Register', 'Apicontroller@Register');
/** rota para obter detalhes API do usuário*/
Route :: Middleware ('Auth: API')-> Grupo (function ()
Rota :: post ('detalhes', 'apicontroller@user_info');
);

Execute o seguinte comando para iniciar o servidor de desenvolvimento do Laravel.

$ php artesan servir

API de teste Autenticação usando o Postman:

Postman é uma ferramenta muito útil para testar APIs RESTful. A solicitação HTTP pode ser gerada com muita facilidade para testar as funcionalidades da API usando a interface do usuário deste aplicativo sem escrever uma grande quantidade de código para enviar solicitações. Postman pode lidar com várias solicitações e utilitários HTTP para desenvolver APIs. Tem versões pagas e gratuitas para Linux.

Instale o agente do Postman:

Execute o seguinte comando do terminal para instalar um agente do Postman no Ubuntu.

$ sudo snap install postman

Abra o aplicativo após a instalação. A interface a seguir aparecerá após abrir a nova janela do Postman.

API do registro de teste:

Clique no criar uma solicitação Link para abrir a janela de solicitação. O servidor de desenvolvimento de Laravel é executado na porta 8000 por padrão que é usado aqui. Se você estiver usando uma porta diferente, precisará modificar o número da porta em seu URL. O método post é selecionado a partir do suspensão e o seguinte URL é usado para enviar uma solicitação de API para API do registro.

http: // localhost: 8000/api/registro

Três campos são definidos como campos obrigatórios para o Usuários tabela para criar um novo usuário. Estes são nome, e-mail, e senha. Defina três teclas e valores para esses campos mostrados abaixo e clique em enviar botão. O registro() método de Apicontroller será chamado de acordo com a rota se a solicitação for enviada corretamente.

A resposta a seguir aparecerá se o novo registro do usuário for inserido com sucesso no Usuários mesa. O código de resposta, 200 indica que a solicitação HTTP foi bem -sucedida e um token é gerado após a inserção do novo usuário que é mostrado no corpo de resposta no formato JSON.

API de login de teste:

Selecione os PUBLICAR método como o Registrar API que é mostrado antes. Defina o seguinte URL na barra de endereços para enviar uma solicitação de API para API de login.

http: // localhost: 8000/api/login

Dois campos são obrigatórios para autenticar qualquer usuário com base nos registros do Usuários mesa. Estes são e-mail e senha. Defina duas teclas e valores para esses campos mostrados abaixo e clique no enviar botão. O Conecte-se() método de Apicontroller será chamado de acordo com a rota se a solicitação for enviada corretamente.

A resposta a seguir aparecerá se o usuário for autenticado com sucesso com base nos registros do Usuários mesa. O código de resposta, 200 indica que a solicitação HTTP foi bem -sucedida. O valor do token é gerado após a autenticação do usuário e retorna o corpo de resposta no formato JSON.

Você receberá o seguinte corpo de resposta quando as credenciais erradas forem fornecidas para autenticar o usuário. 401 O código de erro é gerado aqui para indicar acesso não autorizado.

Teste API Detalhes do usuário:

Alguns parâmetros de cabeçalho são necessários para configurar antes de enviar a solicitação de API de detalhes. Clique no cabeçalhos guia da seção de solicitação e adicione três valores do cabeçalho para identificar o usuário autenticado. O valor do token é copiado do corpo de resposta e definido para o valor da autorização.

Aceitar: Aplicação/JSON
Tipo de conteúdo: Application/JSON
Autorização:
eyj0exaioijkv1qilcjhbgcioijsuzi1nij9.eyjhdwqioiixiiwianrpiJoindu3owuwnmewz
Je3zWnMythhotkxndjkmmqwzdqxyzu4mgfimdm3otc4ntiwyza4ntjjztk2mwu4ngfkyje3odu
wmzc3otiwmzk3owvmntkilcjpyxqioje1otkynzk3mtySim5IZI6MTU5OTI3OTCXNIWIZHWI
joxnjmwode1nze2lcjzdwiioii1iiwic2nvcgvzijpbxx0.fjyvzfsid4wkcklpz2-
W64UVOOK1DQMO_KBLCI7C00XQKHUQUPVKGRUX3E2MJIOJ8ET0MLNGPUIFFS8AET7W8KOQCCL
Szmkujot4fhonq5dyzMB4CSAIXFVOKK8yRM4GPCQ-B1OW5E9K5GCRLKMQNT9A6NYWOGHKXQ4GE
QHNHFGPNOKMFJBTGUKIJ3AMTA2I7QHCBWDIT5O970LDM1EHW-AUMESZFLJDJFN6ZKHK4KC93-
vlpzbgekh1xd0p1fjewyms590oiperuwvs1hfckpsnifyRob04Typhdl25qwbw0m0vatqg9fh
7XGIJFSKYS-FGMMUC7LGLM8JUEVYMZFV-O5XVRLQ2EOCJLHSOFVKKUFZW-J3YFKAHBWY3OOO4GRD4
fowv2tgvdnf1zr_b11bdfdgv3rrl8mznhx9dhjafqubwedsnzbwouor9wy
VH0GI1FCIKWOWSM_BONATFITTR9ZQJKIWRQTKS3KVQSNCF8NIKXLP2DGAXD8MWYWOQ34NLYHHP
0U2TRY_BFFE3Y_ICGQVLBHCMEWDIXJISM8L9CTLODGRQA3WAQP11FV8CJFAIP2MFZ3UUVY6NDQAR
kv6zrq9oe4ncsqvxevp7rwofakpu7ecqnwvdoq4hz5j9twx8bz5eybmghvrxkqkheie2j6gzt0-rburfm

A seção Cabeçalhos da peça de solicitação será parecida com a seguinte imagem. Você tem que definir seu valor de token que é gerado no corpo de resposta do seu agente do Postman.

Em seguida, clique no Autorização guia da seção de solicitação e selecione Token do portador como tipo de autorização do Tipo suspenso.

Agora, selecione o PUBLICAR Método, defina o seguinte URL na barra de endereço. Vai chamar de informação de usuário() método de Apicontroller que recuperará as informações detalhadas do usuário autenticado.

http: // localhost: 8000/API/Detalhes

Se o valor do token e as informações do cabeçalho forem fornecidos corretamente, os detalhes desse usuário serão retornados como um corpo de resposta em formato JSON, como a seguinte imagem.

Vídeo tutorial

Conclusão:

A autenticação de passaporte está usando em muitos sites de Laravel agora para seus recursos úteis. Torna o sistema de autenticação Laravel mais seguro que a autenticação padrão e fornece outros serviços que não estão disponíveis na autenticação padrão. Os usos básicos do passaporte de Laravel com o processo de instalação e configuração são descritos neste tutorial adequadamente. O uso do agente do Postman também é mostrado aqui para testar a API. Espero que o leitor entenda as funcionalidades do pacote de passaporte depois de ler este tutorial.