0

I am trying to login with a custom field called "user_id" but it is not working. I am getting page expired error. Please help.

Login page

<form role="form" action=" {{route('user.login')}}" method="POST">
                <div class="form-group mb-3">
                  <div class="input-group input-group-alternative">
                    <div class="input-group-prepend">
                      <span class="input-group-text"><i class="ni ni-email-83"></i></span>
                    </div>
                    <input class="form-control" placeholder="User Id" name="user_id" type="text">
                  </div>
                </div>
                <div class="form-group">
                  <div class="input-group input-group-alternative">
                    <div class="input-group-prepend">
                      <span class="input-group-text"><i class="ni ni-lock-circle-open"></i></span>
                    </div>
                    <input class="form-control" placeholder="Password" name="password" type="password">
                  </div>
                </div>
                <div class="text-center">
                  <button type="submit" class="btn btn-primary my-4">Log in</button>
                </div>
              </form>

My database fields id user_id user_name password type role remember_token created_at updated_at

by the way my remember_token id null always i don't know why.

changed in Illuminate\Foundation\Auth\AuthenticatesUsers

public function username()
    {
        return 'user_id';
    }

web.php

Route::get('/login', 'UserController@login_form')->name('user.loin_form');
Route::post('/login', 'Auth\LoginController@login')->name('user.login');

what did i missed

Tushar Saha
  • 647
  • 6
  • 13
  • 1
    It looks like you have forgotten the CSRF token required for POST routes. `@csrf` near the top of your form should do it. – matticustard Jul 14 '19 at 00:45
  • Possible duplicate of [laravel 5.8.7 Page expired (419)](https://stackoverflow.com/questions/55327542/laravel-5-8-7-page-expired-419) – César Escudero Jul 14 '19 at 01:14

1 Answers1

0

Just add the csrf token to your form and it will work.

You can add the @csrf blade directive or manually create your csrf input, like this one:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

Using the blade directive:

<form role="form" action=" {{route('user.login')}}" method="POST">
    @csrf
    <div class="form-group mb-3">
        <div class="input-group input-group-alternative">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="ni ni-email-83"></i></span>
            </div>
            <input class="form-control" placeholder="User Id" name="user_id" type="text">
        </div>
    </div>
    <div class="form-group">
        <div class="input-group input-group-alternative">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="ni ni-lock-circle-open"></i></span>
            </div>
            <input class="form-control" placeholder="Password" name="password" type="password">
        </div>
    </div>
<div class="text-center">
    <button type="submit" class="btn btn-primary my-4">Log in</button>
</div>
</form>

Hope it helps.

Mateus Junges
  • 2,559
  • 1
  • 12
  • 24