The page expired due inactivity - Laravel

1

I know there are several post regarding this, but the issue is that I have my field csrf_field() in my form and it works perfectly in local.

When I run the application on the hosting server the error appears. I checked the permissions, I excluded the login route in the VerifyCsrfToken.php and the login is successful, but when I redirect to another page the Auth::user() becomes null .

Route file

Route::group(['prefix' => 'admin', 'middleware' => ['web']], function() {
    // Admin Panel
    Route::get('', function() {
        dd(Auth::user());
        //return view('admin.home');{
    } );

    Route::get('login', 'LoginController@view')->name('login');
    Route::post('login', 'LoginController@login');

    Route::get('home', 'AdminController@home')->name('admin-home');
    Route::get('home/edit', 'AdminController@editHome')->name('edit-home');
    Route::post('home/edit', 'AdminController@editHomeAction');

    Route::get('marketing', 'AdminController@marketing')->name('admin-marketing');
    Route::get('marketing/edit', 'AdminController@editMarketing')->name('edit-marketing');
    Route::post('marketing/edit', 'AdminController@editMarketingAction');

    Route::get('relaciones', 'AdminController@relaciones')->name('admin-relaciones');
    Route::get('relaciones/edit', 'AdminController@editRelaciones')->name('edit-relaciones');
    Route::post('relaciones/edit', 'AdminController@editRelacionesAction');

    Route::get('users', 'AdminController@users')->name('admin-users');
    Route::get('users/add', 'AdminController@addUser')->name('add-user');
    Route::post('users/add', 'AdminController@editUserAction');
    Route::get('users/edit/{$id}', 'AdminController@editUser')->name('edit-user');
    Route::post('users/edit/{$id}', 'AdminController@editUserAction');
    Route::get('users/my-account', 'AdminController@myAccount')->name('my-account');
    Route::post('users/my-account', 'AdminController@myAccountEdit');

    Route::get('subsections/{subsection}', 'AdminController@subsection');
    Route::get('subsection/marketing/add', 'AdminController@addSubsectionMarketing')->name('add-subsection-marketing');
    Route::post('subsection/marketing/add', 'AdminController@addSubsectionMarketingAction');
    Route::get('subsection/relaciones/add', 'AdminController@addSubsectionRelaciones')->name('add-subsection-relaciones');
    Route::post('subsection/relaciones/add', 'AdminController@addSubsectionRelaciones');
    Route::get('subsection/marketing/{id}/edit', 'AdminController@editSubsectionMarketing')->name('edit-subsection-marketing');
    Route::post('subsection/marketing/{id}/edit', 'AdminController@editSubsectionMarketingAction');
    Route::get('subsection/relaciones/{id}/edit', 'AdminController@editSubsectionRelaciones')->name('edit-subsection-relaciones');
    Route::post('subsection/relaciones/{id}/edit', 'AdminController@editSubsectionRelaciones');

});

Form

<!DOCTYPE html>
<html lang="en">
<head>
    @section('page', 'Login | ')
    @include('includes/head', ['page' => 'admin'])
</head>
<body>
    <main>
        <section class="flex-center login">
            <form class="form-horizontal" action="{{ url('/admin/login') }}" method="POST">
                {!! csrf_field() !!}
                <div class="flex-center logo">
                    <img src="{{ asset('img/logo.svg')}}" alt="">
                </div>
                <div class="divider"></div>
                <div class="form-group">
                    <div class="col-3 col-sm-12">
                        <label class="form-label" for="username">Username</label>
                    </div>
                    <div class="col-9 col-sm-12">
                        <input class="form-input" type="text" id="username" name="username" placeholder="Username">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-3 col-sm-12">
                        <label class="form-label" for="password">Password</label>
                    </div>
                    <div class="col-9 col-sm-12">
                        <input class="form-input" type="password" name="password" id="password" placeholder="********">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-4 col-mx-auto col-sm-12">
                        <input class="form-input c-hand btn btn-primary" type="submit" value="Login">
                    </div>
                </div>
                <!-- form structure -->
            </form>
        </section>
    </main>

    <script>
        function loginValidation (event) {
            // console.log(event);
            let username = document.getElementById('username');
            let password = document.getElementById('password');

            if (username.innerHTML === null || username.innerHTML == "") {
                // console.log('Usuario invalido');
                event.preventDefault();
                displayPrompt('username', 'Debe ingresar un usuario');
                // return false;
            }

            if (password.innerHTML === null || password.innerHTML == "") {
                // console.log('Contraseña inválida');  
                event.preventDefault();
                displayPrompt('password', 'Debe ingresar una contraseña');
                // return false;
            }

            // document.getElementById('username-prompt').classList.remove('show');
            // document.getElementById('password-prompt').classList.remove('show');
        }

        function displayPrompt (target, msg) {
            // let msgNode = document.createTextNode(msg);

            switch (target) {
                case 'username':
                    // console.log(document.getElementById('username-prompt'));
                    document.getElementById('username-prompt').innerHTML = msg;
                    document.getElementById('username-prompt').classList.add('show');
                    break;

                default:
                    // console.log(document.getElementById('password-prompt'));
                    document.getElementById('password-prompt').innerHTML = msg;
                    document.getElementById('password-prompt').classList.add('show');
                    break;
            }
        }

        // document.querySelector('#loginForm').addEventListener('submit', loginValidation, false);
        // console.log(document.querySelector('#loginForm').onsubmit);
    </script>
</body>

Driver

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\RedirectResponse;

class LoginController extends Controller
{

    public function view() {
        return view('admin/login');
    }

    public function login(Request $req) {
        //dd('hola');
        $user = $req->only('username', 'password');

        if (Auth::attempt($user)) {
            // Authentication passed...
            return redirect('admin');
        }

        dd('invalido');
    }
}
    
asked by josedan10 04.05.2018 в 17:30
source

1 answer

0

This problem is caused by the token verification% co_of% failing.

Then, either you are not publishing one or you are publishing the wrong one.

You can publish a CSRF token on your form by calling:

{{ csrf_field() }}

Or you can exclude in the following route of your installation:

CSRF

You look for the line that has this:

protected $except = [
    'tu/ruta'
];
    
answered by 04.05.2018 в 20:03