Laravel - проверка хеша возвращает ложь, даже если она верна - PullRequest
0 голосов
/ 01 февраля 2019

Я использовал md5 для входа из формы и пытаюсь перейти на bcrypt, но метод Hashk::check всегда возвращает false, даже если пароль правильный, есть идеи, почему он не работает?

         $email = Input::get('email');
         $password =  Input::get('password');
         $user = User::where("email","=",$email)->first();

            if(Hash::check($password,$user->password)) {

                    $userID = $user->id_user;
                    $username = $user->first_name." ".$user->last_name;
                    $admin = "yes";
                    Session::put('userID',$userID);
                    Session::put('userName',$username);
                    Session::put('admin',$admin);
                    return redirect('/cw-admin/');
            } else {
                    return Redirect::to('/cw-admin/login')
                        ->withErrors(['no' => 'Incorrect password']);
            }
            }

EDIT добавил модель User, я только изменил fillables, primaryKey и ID, методы остались пустыми.

class User extends Model implements Authenticatable
{

    protected $table = 'user';
    protected $primaryKey = 'id_user';

    protected $fillable = [
        'first_name','last_name','password','email'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
    }

выходной сигнал:

User {#592 ▼
  #table: "user"
  #primaryKey: "id_user"
  #fillable: array:4 [▼
    0 => "first_name"
    1 => "last_name"
    2 => "password"
    3 => "email"
  ]
  #hidden: array:2 [▼
    0 => "password"
    1 => "remember_token"
  ]
  #connection: "mysql"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:7 [▶]
  #original: array:7 [▶]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #visible: []
  #guarded: array:1 [▼
    0 => "*"
  ]
}

1 Ответ

0 голосов
/ 01 февраля 2019

Вы должны проверить определение таблицы пользователя.Если поле Hashed возвращает false, даже если вы что-то публикуете, оно не получает того же значения, которое вы опубликовали.

В моем случае я бы использовал максимальную длину для столбцов, которыехранить хэшированные значения.

Alter Table Users Modify password VCHAR(255);

...