Preso na Autenticação

33 views
Skip to first unread message

pablo henrique mendes gonçalves

unread,
Apr 12, 2024, 12:22:34 PM4/12/24
to Laravel Brasil
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;
    }
}





Eduardo José Christofoletti

unread,
Apr 15, 2024, 7:45:32 AM4/15/24
to Laravel Brasil
Teria que dar uma olhada na senha, se ela foi criada pelo Laravel, se não vc tera que fazer um update das senhas. pq aqui vc usa : 

$senhaEncrypt=bcrypt($vendedor->SENHA);

               if(Auth::check()||($vendedor && Hash::check($senha,$vendedor->SENHA))){ e não :  if(Auth::check()||($vendedor && Hash::check($senha,$senhaEncrypt))){

Alex Juchem

unread,
Apr 15, 2024, 7:52:54 AM4/15/24
to laravel...@googlegroups.com
Bom dia, parece que você está com problema para escrever na sessão.
Você está usando banco de dados ou arquivo para criar as sessões?

--
Você recebeu essa mensagem porque está inscrito no grupo "Laravel Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para laravel-brasi...@googlegroups.com.
Para acessar essa discussão na Web, acesse https://groups.google.com/d/msgid/laravel-brasil/291d1dc9-e84b-4532-b521-ad6bbf857a1cn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages