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,
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 ficheiroconfig/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: