5
respostas

Autenticação usuário Laravel 5.0

Olá a todos,

Estou tentando implementar a parte de autenticação no Laravel, no meu caso a base já existe (não estou usando o padrão do laravel). Configurei tudo, inclusive o arquivo config/auth.php, só que estou achando que a senha não confere devido o hash, eu até modifiquei a senha do cadastro de usuário usando o método Hash::make(), mas não funcionou.

Se eu uso o método Auth::loginUsingId(1) eu consigo autenticar tranquilo como usuário 1.

Nesse caso como eu consigo autenticar o usuário?

5 respostas

o laravel usa a função bcrypt() pra fazer a criptografia da senha, sempre que você fizer login ele vai criptografar sua senha usando essa função e comparar no banco de dados. Sendo assim pra que a validação funcione sua senha tem que estar com esse mesmo tipo de criptografia no banco de dados.

Eu estava usando o Hash:make, mas vou tentar com o bcrypt.

A minha solução (temporária) foi Buscar o usuário usando eloquent (método where com a condição de user e senha). Se retornar o cadastro do usuário, eu pego o id e atribuo no método Auth::loginUsingId(id). Foi uma saída que eu encontrei.

Ola. Estou com um problema que envolve o mesmo assunto.

Esta é a autenticação que estou fazendo:

public function autenticaDados($credenciais){
        $usuario = new Usuario();
        $usuario = Usuario::where('email', $credenciais['email'])->first();
        $dadosUsuario = $usuario->getAll();
        if (Hash::check($credenciais['password'], $dadosUsuario['password']))
        {
            Auth::loginUsingId($dadosUsuario['id'], true);
            return Auth::user(); //Até Aqui tudo bem, esta efetuando o Loguin e retornando o usuário.
        } else{
            return null;
        }
    }

O problema é que a Autenticação não continua apos trocar de pagina, por exemplo:

Ao chamar um:

\Auth::user();

O retorno que tenho é 'null';

Porém esta sendo autenticado e logado no método "autenticaDados()".

Saberia dizer oque estou fazendo errado?

A maneira mais simples de fazer a autenticação aproveitando as classes do Laravel, é usar o Auth::attempt(array contendo as informações email e password) obs o nome tem que ser exatamente assim pois nas funcões internas está declarado dessa forma, assim como a sua tabela do BD também, O attempt já loga o usuário e cria as variaveis de sessão, a função Auth::loginUsingId($dadosUsuario['id'], true); só loga o usuário mas não guarda os dados na sessão.

Segue um exemplo prático

<?php namespace estoque\Http\Controllers;

use estoque\Http\Requests; use estoque\Http\Controllers\Controller;

use Auth; use Request;

class LoginController extends Controller {

public function login() { $credenciais = Request::only('email', 'password');

if(Auth::attempt($credenciais)) { return "Usuário NOME logado com sucesso"; }

return "As credencias não são válidas"; } }

Abraços, espero ter ajudado

Dois detalhes que estavam acontecendo:

Declarei Atributos na classe Usuario, e estava gerando alguns problemas que impediam o Attempt de funcionar, ao remover, funcionou, porém também não esta mantendo o login.

Vou ver se não fiz mais nada de errado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software