Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

dmelo320's avatar

status 302 when submitting form

Hello, I'm using laravel 5.4 and when I submit the login form, I get status 302 and it is not sent to the database and I'm going back to the form page.

Controller

public function getLogin(Request $request)
    {
        $view = property_exists($this, 'loginView')
                    ? $this->loginView : 'empresaauth.authenticate';

        if (view()->exists($view)) {
            return view($view);
        }

        return view('site.usuario.login-empresa');
    }



    public function postLogin(Request $request)
    {
        // Confere os dados do form com o banco de dados
        $dados = array(
            'email' => $request->input('email'),                
            'password'  => $request->input('senha'),
        );           

        // Faz a tentativa de realizar o login e confere os dados com a model.
        if (Auth::guard('web_empresa')->attempt($dados)) { 

            // Se conferir ele redireciona para a rota que está protegida, dentro da midlleware.
            return redirect('/empresa/dashboard');

        } else {        

            $mensagem = array(
                'type' => 'primary',
                'retorno' => 'E-mail e Senha não conferem com nossos registros'
            );
            
            return redirect('/login/empresa')->with('status', $mensagem['type'])
            ->with('retornomensagem', $mensagem['retorno']);                                              

        }
    }

    public function logout()
    { 
        Auth::guard('web_empresa')->logout();
        Session::flush();
        return redirect('/');   
    }

Routes

Route::group (['middleware' => ['empresaauth:web_empresa']], function () {

Route::get('/empresa/dashboard', ['as' => 'site.empresa.index', 'uses' => 'Site\EmpresaController@inicio']);

});

// LOGIN DE EMPRESAS
Route::get('/login/empresa', ['as' => 'site.empresa.login', 'uses' => 'Site\EmpresaController@getLogin']);
Route::post('/acessar', ['as' => 'site.empresa.acesso', 'uses' => 'Site\EmpresaController@postLogin']);
Route::get('/login/empresa/logout', ['as' => 'site.empresa.logout', 'uses' => 'Site\EmpresaController@logout']);

Kernel

 protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'web_empresa' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            //\Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            //\App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        //'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'empresaauth' => \App\Http\Middleware\EmpresaAuthenticate::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'auth.mediador' => \App\Http\Middleware\Mediador::class,
        'auth' => \App\Http\Middleware\Authenticate::class,
    ];
}

Auth.php


    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],

        'web_empresa' => [
            'driver' => 'session',
            'provider' => 'empresas',
        ],

    ],

_______

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Usuario::class,
        ],

        'empresas' => [
            'driver' => 'eloquent',
            'model' => App\Empresa::class,
        ],


        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

0 likes
17 replies
tykus's avatar

302 is expected if you are redirecting, no?

Also, you are redirecting to a POST route here... redirect('/acessar')...?

2 likes
Alamin's avatar

Could you please show your form blade?

1 like
dmelo320's avatar

View form login

<section class="section contato">
    <div class="container">
        <div class="row">
            <div class="col-sm-12">
                <form action="{{ url('/acessar') }}" method="post" class="form-contato login">
                    {{ csrf_field() }}
                    <label for="#email" class="input-grupo">
                        <p>E-mail</p>
                        <input class="input" type="email" id="email" name="email" placeholder="Ex: [email protected]" required>
                    </label>

                    <label for="#senha" class="input-grupo">
                        <p>Senha</p>
                        <input class="input" type="password" id="senha" name="senha" required>
                    </label>
Alamin's avatar

If you are using https replace form action with

 <form action="{{ URL::to('/acessar',array(), true) }}" method="post" class="form-contato login">
1 like
dmelo320's avatar

I am using the local server, so it does not work that way thanks

Snapey's avatar

Why do you have two Route::get('empresa/dashboard' ?

Only one of them will ever get used

1 like
dmelo320's avatar

@Snapey I removed the other route and continues the problem, it does not redirect anywhere.

arukomp's avatar

the empresa/dashboard route is auth protected, but you're trying to redirect to it when the authentication failed. So, it redirects to empresa/dashboard but the user is not logged in and (I presume) it does another 302 to your login page

1 like
dmelo320's avatar
public function postLogin(Request $request)
    {
        // Confere os dados do form com o banco de dados
        $dados = array(
            'email' => $request->input('email'),                
            'password'  => $request->input('senha'),
        );           

        // Faz a tentativa de realizar o login e confere os dados com a model.
        if (Auth::guard('web_empresa')->attempt($dados)) { 

            // Se conferir ele redireciona para a rota que está protegida, dentro da midlleware.
            return redirect('empresa/dashboard');

        } else {        

            $mensagem = array(
                'type' => 'primary',
                'retorno' => 'E-mail e Senha não conferem com nossos registros'
            );
            
            return redirect('login/empresa');
        }
    }

@arukomp I made the correction and did not reach the first condition, it goes to the second condition, the system can not compare the form data with the template.

arukomp's avatar

@dmelo320 I wonder what your App\Empresa::class looks like. Does it implement Illuminate\Contracts\Auth\Authenticatable and Illuminate\Contracts\Auth\Access\Authorizable

1 like
dmelo320's avatar

@arukomp I had already implemented.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
//use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Empresa extends Authenticatable
{

...
Snapey's avatar

Your model App\Empresa contains email field and bcrypt password?

1 like
dmelo320's avatar

@Snapey, yes contains the fields email and password.

class Empresa extends Authenticatable
{

   protected $fillable = ['nome', 'fundacao', ' numero_func', 'telefone','setor', 'social_id', 'email', 'senha', 'descricao', 'status'];
Snapey's avatar
Snapey
Best Answer
Level 122

That does not answer the question

From $fillable, your table contains senha and not password

plus you don't say if passwords use bcrypt

2 likes

Please or to participate in this conversation.