Autenticação

aviso que está a procurar na documentação uma versão antiga do Laravel. Considere actualizar o seu projecto para Laravel 8.x.

  • Introdução
  • Autenticação de Usuários
  • Recuperar O Usuário Autenticado
  • Proteger Rotas
  • HTTP Basic Authentication
  • Lembretes de Senha & Redefinir >
  • Social de Autenticação

Introdução

Laravel faz com que a implementação de autenticação muito simples. Na verdade, quase tudo está configurado para você fora da caixa. O arquivo de configuração da autenticação está localizado em config/auth.php, que contém várias opções bem documentadas para ajustar o comportamento dos serviços de autenticação.Por padrão, Laravel inclui um modelo App\User no seu diretório app. Este modelo pode ser usado com o driver de autenticação eloquente por omissão.

lembre-se: ao construir o esquema da base de dados para este modelo, Faça com que a coluna da senha tenha pelo menos 60 caracteres. Além disso, antes de começar, certifique-se de que a sua tabela users (ou equivalente) contém uma coluna nula remember_token de 100 caracteres. Esta coluna será usada para armazenar um token para as sessões” lembre-se de mim ” sendo mantidas pela sua aplicação. Isto pode ser feito usando $table->rememberToken(); numa migração. Claro, Laravel 5 naves migram para estas colunas para fora da caixa!

se a sua aplicação não estiver a usar eloquente, poderá usar o controlador de autenticação database que usa o construtor de consultas Laravel.

autenticar os utilizadores

naves Laravel com dois controladores relacionados com a autenticação fora da caixa. O AuthController lida com o novo registro de usuário e” logging in”, enquanto o PasswordController contém a lógica para ajudar os usuários existentes a redefinir suas senhas esquecidas.

cada um destes controladores usa uma característica para incluir seus métodos necessários. Para muitas aplicações, você não precisará modificar esses controladores de forma alguma. As vistas que estes controladores renderam estão localizadas no diretório resources/views/auth. Você é livre para personalizar estas vistas como quiser.

o registrador do Usuário

para modificar os campos de formulário que são necessários quando um novo usuário registra com sua aplicação, você pode modificar a classe App\Services\Registrar. Esta classe é responsável por validar e criar novos usuários de sua aplicação.

o método validator do Registrar contém as regras de validação para novos utilizadores da aplicação, enquanto o método create do Registrar é responsável pela criação de novos registos User na sua base de dados. Você está livre para modificar cada um destes métodos como desejar. O Registrar é chamado pelo AuthController através dos métodos contidos na característica AuthenticatesAndRegistersUsers.

autenticação manual

se optar por não utilizar a implementação fornecida AuthController, terá de gerir a autenticação dos seus utilizadores utilizando directamente as classes de autenticação Laravel. Não te preocupes, ainda é canja! Primeiro, vamos verificar o método attempt:

o método attempt aceita uma matriz de pares chave / valor como seu primeiro argumento. O valor password será hashed. Os outros valores no array serão usados para encontrar o usuário em sua tabela de banco de dados. Assim, no exemplo acima, o Usuário será recuperado pelo valor da coluna email. Se o usuário for encontrado, a senha hashed armazenada no banco de dados será comparada com o valor hashed password passado para o método através do array. Se as duas senhas tracejadas coincidirem, será iniciada uma nova sessão autenticada para o utilizador.

o método attempt irá retornar true se a autenticação foi bem sucedida. Caso contrário, false será devolvido.

Nota: neste exemplo, email não é uma opção necessária, é apenas usado como um exemplo. Deve usar qualquer nome de coluna que corresponda a um” utilizador ” na sua base de dados.

a função de redirecionamento intended irá redirecionar o Usuário para o URL que eles estavam tentando acessar antes de ser pego pelo filtro de autenticação. Pode ser dado um URI de recurso a este método no caso de o destino previsto não estar disponível.Autenticar um utilizador com condições

pode também adicionar condições adicionais à consulta de autenticação:

if (Auth::attempt()){ // The user is active, not suspended, and exists.}

para Determinar Se Um Usuário É Autenticado

Para determinar se o usuário já está conectado em seu aplicativo, você pode usar o check método:

if (Auth::check()){ // The user is logged in...}

Autenticação de Um Usuário E para “Lembrar” Eles

Se você gostaria de oferecer a “lembrar-me” funcionalidade na sua aplicação, você pode passar um valor booleano como segundo argumento para o attempt método, o que vai manter o usuário autenticado indefinidamente, ou até que eles manualmente logout. Claro, a sua tabela users deve incluir a string remember_token coluna, que será usada para armazenar o token” lembre-se de mim”.

if (Auth::attempt(, $remember)){ // The user is being remembered...}

Se você é “lembrar” os usuários, você pode usar o viaRemember método para determinar se o usuário foi autenticado usando o “remember me” cookie:

if (Auth::viaRemember()){ //}

Autenticação de Usuários Por ID

Para fazer um usuário para o aplicativo pelo seu ID, utilize o loginUsingId método:

Auth::loginUsingId(1);

Validar as Credenciais do Usuário Sem Login

O validate método permite validar as credenciais de um usuário sem realmente fazer-los na aplicação:

if (Auth::validate($credentials)){ //}

registar um utilizador para um único pedido

pode também utilizar o método once para registar um utilizador no pedido para um único pedido. Não serão utilizadas sessões ou cookies:

if (Auth::once($credentials)){ //}

registar manualmente num utilizador

se necessitar de registar uma instância de utilizador existente na sua aplicação, poderá ligar para o método login com a instância de utilizador:

Auth::login($user);

isto é equivalente ao login em um usuário através de credenciais usando o método attempt.

registar um utilizador fora da aplicação

Auth::logout();

é claro, se estiver a utilizar os controladores de autenticação Laravel incorporados, é fornecido na caixa um método de controlo que lida com os utilizadores de Registo fora da aplicação.

Authentication Events

When the attempt method is called, the auth.attempt event will be fired. Se a tentativa de autenticação for bem sucedida e o usuário estiver logado, o evento auth.login também será disparado.

recuperando o utilizador autenticado

uma vez que um utilizador é autenticado, existem várias formas de obter uma instância do utilizador.

primeiro, você pode acessar o usuário a partir da fachada Auth:

segundo, você pode acessar o usuário autenticado através de uma instância Illuminate\Http\Request:

terceiro, você pode digitar o contrato Illuminate\Contracts\Auth\Authenticatable. Esta dica de tipo pode ser adicionada a um construtor de controlador, ao método do controlador ou a qualquer outro construtor de uma classe resolvida pelo reservatório de serviço:

proteger as vias

Middleware rota pode ser usado para permitir que apenas utilizadores autenticados acedam a uma dada rota. Laravel fornece o middleware auth por padrão, e é definido em app\Http\Middleware\Authenticate.php. Tudo o que precisa de fazer é anexá-lo a uma definição de rota:

HTTP Basic Authentication

HTTP Basic Authentication oferece uma forma rápida de autenticar os utilizadores da sua aplicação sem configurar uma página dedicada de “autenticação”. Para começar, anexe o middleware auth.basic à sua rota:

protegendo uma rota com o HTTP Basic

Route::get('profile', );

por padrão, o basic middleware irá usar a coluna email no registo do utilizador como o “utilizador”.

configurar um filtro básico HTTP

pode também usar a Autenticação Básica HTTP sem definir um cookie identificador de utilizador na sessão, o que é particularmente útil para a autenticação API. Para isso, defina um middleware que chama o método onceBasic :

public function handle($request, Closure $next){ return Auth::onceBasic() ?: $next($request);}

se estiver a usar o PHP FastCGI, a autenticação básica de HTTP pode não funcionar correctamente fora da caixa. As seguintes linhas devem ser adicionadas ao seu ficheiro .htaccess :

RewriteCond %{HTTP:Authorization} ^(.+)$RewriteRule .* - 

lembretes de senha & Reset

Model & Table

a maioria das aplicações web fornecem uma maneira para os usuários reiniciarem suas senhas esquecidas. Em vez de o obrigar a voltar a implementar isto em cada aplicação, o Laravel oferece métodos convenientes para enviar chamadas de atenção por senha e executar as chamadas de resposta por senha.

para começar, verifique se o seu modelo User implementa o contrato Illuminate\Contracts\Auth\CanResetPassword. Naturalmente, o modelo User incluído com o framework já implementa esta interface, e usa o traço Illuminate\Auth\Passwords\CanResetPassword para incluir os métodos necessários para implementar a interface.

gerando a migração da tabela lembrete

em seguida, uma tabela deve ser criada para armazenar os tokens de reset de senha. A migração para esta tabela está incluída com Laravel fora da caixa, e reside no diretório database/migrations. Então tudo que você precisa fazer é migrar:

php artisan migrate

O controlador de chamada de senhas

Laravel também inclui um Auth\PasswordController que contém a lógica necessária para repor as senhas do utilizador. Até demos vistas para começar! As vistas estão localizadas no diretório resources/views/auth. Você é livre para modificar estas vistas como você deseja se adequar ao Projeto de sua própria aplicação.

o seu utilizador receberá um e-mail com uma ligação que aponta para o método getReset do PasswordController. Este método irá renderizar o formulário de reset de senha e permitir que os usuários reiniciem suas senhas. Após a senha ser resetada, o Usuário será automaticamente conectado à aplicação e redirecionado para /home. Você pode personalizar a localização de redirecionamento pós-reset definindo uma propriedade redirectTo na PasswordController:

protected $redirectTo = '/dashboard';

Nota: Por padrão, os tokens de reset de senha expiram após uma hora. Pode alterar isto através da opção reminder.expire no seu ficheiro config/auth.php.

autenticação Social

além da autenticação típica, baseada na forma, Laravel também fornece uma forma simples e conveniente de autenticar com provedores de OAuth usando Laravel Socialite. A Socialite atualmente suporta autenticação com Facebook, Twitter, Google, GitHub e Bitbucket.

para começar com Socialite, inclua o pacote no seu ficheiro composer.json :

"laravel/socialite": "~2.0"

a seguir, registe o Laravel\Socialite\SocialiteServiceProvider no seu ficheiro de configuração config/app.php. Você também pode registrar uma fachada:

'Socialize' => 'Laravel\Socialite\Facades\Socialite',

você precisará adicionar credenciais para os Serviços de OAuth que sua aplicação utiliza. Estas credenciais devem ser colocadas no seu ficheiro de configuração config/services.php e devem usar a chave facebook, twitter, google, ou github, dependendo dos fornecedores que a sua aplicação requer. Por exemplo:

'github' => ,

em seguida, você está pronto para autenticar usuários! Você vai precisar de duas rotas: um para redirecionar o Usuário para o provedor de OAuth, e outro para receber o retorno do provedor após a autenticação. Aqui está um exemplo usando a fachada Socialize:

o método redirect cuida de enviar o Usuário para o provedor de OAuth, enquanto o método user irá ler o pedido de entrada e recuperar a informação do usuário do provedor. Antes de redirecionar o usuário, Você também pode definir “scopes” no pedido:

return Socialize::with('github')->scopes()->redirect();

logo que tenha uma instância de utilizador, poderá obter mais alguns detalhes sobre o utilizador:

recuperando os detalhes do utilizador