Login e Autenticação sem Kit inicial

12/04/2024

0

Olá Galera, sou novo aqui e estou iniciando com desenvolvimento e estou travado com uma aplicação que estou tentando desenvolver. Existe uma aplicação que usa uma base de dados já estruturada a qual não posso alterar, comecei a desenvolver uma aplicação que ira interagir com esta base e com os dados que possui e informar alguns dados também as views que fazem esta interação já estão ok, logo parti para parte de login e autenticação, como a base não pode ser alterada, realizei alguns ajustes para usar a tabela que a base já possui com os dados de login. Foi onde me deparei com a seguinte situação aparentemente a aplicação faz a busca e comparação corretamente, porem quando uso o redirecionamento para a próxima view a sessão não é persistida. testei algumas coisas para tentar entender oque eu não fiz ou onde estou errando. Buscando o mais simples no controller do login, fiz a logica para autenticar desta forma:
class LoginController extends Controller{

public function login()
{

return view(''''auth.login'''');
}

public function autenticar(Request $request){

$dados = $request->all();
$EMAIL= $dados[''''EMAIL''''];
$senha= $dados[''''SENHA''''];

try{

$vendedor = Vendedor::where(''''EMAIL'''',$EMAIL)->first();
if($vendedor!=null){
$senhaEncrypt=bcrypt($vendedor->SENHA);

if(Auth::check()||($vendedor && Hash::check($senha,$vendedor->SENHA))){

Auth::login($vendedor);

//return redirect(route(''''PaginaPrincipal''''));
return view(''''PaginaPrincipal'''');
}else{

$erroMsm=''''Senha Inválida.'''';
return response()->view(''''auth.login'''',[''''error'''' =>$erroMsm]);
}

}else{

$erroMsm=''''Usuário Inválido.'''';
return response()->view(''''auth.login'''',[''''error'''' =>$erroMsm]);
}
}catch(Exception $e){
$erroMsm=''''Não Foi possível acessar o sistema, contate o administrador.'''';
return response()->view(''''auth.login'''',[''''error'''' =>$erroMsm]);

}

}
}

Da forma que fiz quando uso return redirect e na pagina de destino tem dd(Auth::check())
o retorno é FALSE quando uso return view () o retorno e TRUE.
o que resulta que o consigo proteger a rota ... vou compartilhar os demais código e quem puder me dar uma luz por favor eu agradeço demais
Conteúdo do Auth.php
''''guards'''' => [
''''web'''' => [
''''driver'''' => ''''session'''',
''''provider'''' => ''''vendedor'''',
],
],
''''providers'''' => [
''''users'''' => [
''''driver'''' => ''''eloquent'''',
''''model'''' => App\Models\User::class,
],
''''vendedor'''' => [
''''driver'''' => ''''eloquent'''',
''''model'''' => App\Models\Vendedor::class,
],
Minhas Rotas
Route:: get(''''/'''',[LoginController::class,''''login''''])->name(''''login'''');
Route:: post(''''/autenticar'''',[LoginController::class,''''autenticar''''])->name(''''autenticar'''');

Route::middleware([''''auth''''])->group(function(){
Route:: get(''''/PaginaPrincipal'''',[SitePublicoController::class,''''paginaPrincipal''''])->name(''''PaginaPrincipal'''');
});
Meu Model
<?php

namespace App\Models;


use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;


class Vendedor extends Authenticatable
{
use HasFactory, Notifiable;

// Defina a tabela correspondente ao modelo
protected $table = ''''vendedor'''';


// Defina os campos que podem ser atribuídos em massa
protected $fillable = [
''''NOME'''', ''''EMAIL'''', ''''SENHA'''',''''usuario_PARAMetro'''',
];

// Oculta os campos sensíveis, como a senha, ao serializar o modelo
protected $hidden = [
''''SENHA'''',
];

public function getAuthPassword()
{
return $this->SENHA;
}
}
Pablo Mendes

Pablo Mendes

Responder

Post mais votado

12/04/2024

Qual versão do Laravel você está utilizando?

Na própria documentação do Laravel tem uma explicação de como fazer exatamente o que você está querendo [link][https://laravel.com/docs/10.x/authentication#authenticating-users].

Notei que você está fazendo o bcrypt. Se a sua versão for 9+ você pode utilizar o cast dentro do seu modelo Vendedor, para o campo senha.

Exemplo:
class Vendedor extends Authenticatable
{
protected $casts = [
'senha' => 'hashed',
];
}

Se precisar de alguma ajuda pode me mandar mensagem.

Pablo Domingos

Pablo Domingos
Responder

Mais Posts

13/04/2024

Pablo Mendes

Qual versão do Laravel você está utilizando?

Na própria documentação do Laravel tem uma explicação de como fazer exatamente o que você está querendo [link][https://laravel.com/docs/10.x/authentication#authenticating-users].

Notei que você está fazendo o bcrypt. Se a sua versão for 9+ você pode utilizar o cast dentro do seu modelo Vendedor, para o campo senha.

Exemplo:
class Vendedor extends Authenticatable
{
protected $casts = [
'senha' => 'hashed',
];
}

Se precisar de alguma ajuda pode me mandar mensagem.


Ola Pablo Domingos,

Eu cheguei a me basear na documentação para realizar esse processo, mas ou eu não vi algo ou eu não entendi algo porque eu de fato permaneço sem conseguir que o usuário tenha sua autenticação realizada com sucesso , tem alguma dica além da que você passou para me ajudar ?
Responder

13/04/2024

Pablo Mendes

Qual versão do Laravel você está utilizando?

Na própria documentação do Laravel tem uma explicação de como fazer exatamente o que você está querendo [link][https://laravel.com/docs/10.x/authentication#authenticating-users].

Notei que você está fazendo o bcrypt. Se a sua versão for 9+ você pode utilizar o cast dentro do seu modelo Vendedor, para o campo senha.

Exemplo:
class Vendedor extends Authenticatable
{
protected $casts = [
'senha' => 'hashed',
];
}

Se precisar de alguma ajuda pode me mandar mensagem.


Ola Pablo Domingos,

Eu cheguei a me basear na documentação para realizar esse processo, mas ou eu não vi algo ou eu não entendi algo porque eu de fato permaneço sem conseguir que o usuário tenha sua autenticação realizada com sucesso , tem alguma dica além da que você passou para me ajudar ? Estou usando o Laravel 10
Responder

15/04/2024

Pablo Domingos

Oi, desculpa pela demora. Eu tentei recriar essa autenticação seguindo a documentação e consegui um resultado.
Verifique o código que eu subi no repositório Github: https://github.com/Pablodomingos/example-app

Se tiver alguma dúvida só pergunta.
Responder

18/04/2024

Pablo Mendes

Oi, desculpa pela demora. Eu tentei recriar essa autenticação seguindo a documentação e consegui um resultado.
Verifique o código que eu subi no repositório Github: https://github.com/Pablodomingos/example-app

Se tiver alguma dúvida só pergunta.


Eu que peço desculpas para demorar a retornar ....

A principio eu tinha executado o mesmo que você seguindo a documentação quando não consegui tentei outras abordagens, poren não deu certo e acabei buscando ajuda.
Resolvi utilizar o seu projeto limpo para depurar todos os pontos e por fim descobri que além do campo senha o laravel estava precisando de usar o campo id para persistir a sessão mesmo eu usando um guard custom consegui resolver utilizando meu model da seguinte forma

public function getAuthIdentifier()// retorno quando busca o id
{
return $this->CODIGO;
}

public function getAuthIdentifierName()// retorno quando precisa do select pelo id
{
return 'CODIGO';
}

desta forma quando precisa de usar id para validar o usuário ele é encontrado corretamente.

Muito obrigado pela ajuda !! foi top

abraço
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar