W momencie kiedy podam dobre hasło wyskauje błąd ErrorException Undefined index: password

0

Mam taki problem z laravelem mam skrypt, który sprawdza hasło i w momencie kiedy to hasło jest dobre i nazwa użytkwonika to wyskauje błąd.ErrorException Undefined index: password daje kod źródłowy.

Contreoller

          public function login3() {

    $password = sha1(Input::get('password'));
  $user = array(
    'login' => Input::get('login'),
    'haslo' => $password
  );
  if (Input::get('login') == "" and Input::get('password') == "" ) {
    //return Redirect('blad')->with('login_error','Uzupełnij pole login i hasło');
    print "3";
  }
  if (Auth::attempt($user))
  {
  print "1";
    //return Redirect('/sukces')->with('login_sukces','Poprawnie się zalogowałeś');
  }
  else {
  print "2";
    //return Redirect('blad')->with('login_error','Nieprawidłowy login lub hasło');
  }
    
    }

I w momencie kiedy wpisze żle hasło to jest poprawny komunikat.

<div id=login>
  <br><Br><br><Br>
  <div id=login_center>
    <div class="row">
    <form action={{ url('login3') }} method=post>
      <div class="col-md-1 col-xs-1"> </div>
      <div class="col-md-5 col-xs-5"><span class=login>Twój login</span></div>
      <div class="col-md-5 col-xs-5"><input type=text class=form-control size=19 placeholder=login name=login></div>
    </div>
    <div class="row">
      <div class="col-md-1 col-xs-1"> </div>
      <div class="col-md-5 col-xs-5"><span class=login>Twoje hasło</span></div>
      <div class="col-md-5 col-xs-5"><input type=password class=form-control size=19 placeholder=hasło name=password></div>
    </div>
    <div class="row">
      <div class="col-md-1 col-xs-1"> </div>
      <input type="hidden" name="_token" value="{{ csrf_token() }}">
      <div class="col-md-10 col-xs-10"><br><div align=center><button  class="btn btn-primary">Zaloguj</button></div></div>
    </form>
    </div>
    
  </div>
  
</div>
0

Jeszcze dodam, że nie mam zriobionej migracji tabele mam wziętą na żywca a to jest struktura tabeli users.

id int(11) Nie Klucz główny NULL auto_increment
login varchar(50) Tak Brak NULL
haslo varchar(200) Tak Brak NULL
email varchar(80) Tak Brak NULL
data_rejestracji datetime Tak Brak NULL
czas_ostatniego_pobytu int(11) Tak Brak NULL
ip_ostatniego_logowania varchar(15) Tak Brak NULL
system_operacyjny varchar(30) Tak Brak NULL
przegladarka varchar(65) Tak Brak NULL
sciezka_style varchar(50) Tak Brak NULL
rodzaj_usera varchar(20) Tak Brak NULL

0

A nie napisali Ci, w której linii ten błąd?

0

w ogóle to napisali, że błąd jest w takim pliku

in EloquentUserProvider.php (line 126)
at HandleExceptions->handleError(8, 'Undefined index: password', '/var/www/html/kale_2017/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php', 126, array('user' => object(User), 'credentials' => array('login' => 'tomi', 'haslo' => '821c6e4d060725576d68717f2c4bd95429bbb848')))in EloquentUserProvider.php (line 126)

czyli w tej linijce,

$plain = $credentials['password'];

a to jest plik wygenerowany przez laravela.

0

Pole z hasłem musi się nazywać password, a nie hasło, tak jak u Ciebie

$user = array(
    'login' => Input::get('login'),
    'haslo' => $password
  );
0

Zmieniłem na password i bazie danych też na password i teraz obojętnie czy wpisze dobre i czy złe hasło to wyrzuca mi warunek do złego hasła.

2

A hasło dla usera masz stworzone? Pamiętaj, że w bazie powinno być zaszyfrowane.
Jeśli moduł Auth nie był modyfikowany to skoro masz komunikat o złym haśle to jest ono złe.

0

Może to być wina algorytmu szyfrującego bo jak w bazie i skrypcie zmieniłem z sha1 na Hash::make to wszystko działa.

0

A jakie było wcześniej?
nie możesz wyprintować hasła z formularza i tego w bazie? porównać hash i zobaczyć czy się zgadza?

0

Wcześniej było sha1, ale niech już zostanie Hash::make

1

Laravel używa innego algorytmu hashowania, a konkretnie bcrypt, dlatego nie działa Ci sha1. Możesz zapisywać do bazy sha1, ale Auth::guard wywołuje metodę validateCredentials, a w niej już jest sprawdzenie za pomocą fasady Hash, która używa bcrypt.

Można to oczywiście zmienić, żeby działalo z sha1, ale nie wiem po co.

EloquentUserProvider:124

    public function validateCredentials(UserContract $user, array $curedentials)
    {
        $plain = $credentials['password'];
        return $this->hasher->check($plain, $user->getAuthPassword());
    }

W tym wypadku $this->hasher to https://laravel.com/docs/5.4/hashing#introduction.

1 użytkowników online, w tym zalogowanych: 0, gości: 1