Ха sh :: проверка всегда ложна или равна нулю - PullRequest
0 голосов
/ 16 марта 2020

Почему при входе в систему Ha sh :: check всегда имеет значение false или null?

Это часть моего контроллера регистров. Пароль, который я сохраняю в одной таблице с именем «пароль», которую я х sh с помощью метода ниже

    ....
               $user = new Hause_users();
               $user->username = request('username');
               $user->Email = request('email');
               $user->password = Hash::make(request('password'));
               $user->First_Last_Name = request('first_last_name');


               $user->save();

Ниже мой контроллер входа в систему с методом Ha sh :: check, где я проверяю текущий пользователь, его хешированный пароль в моей БД с именем Hause_users, я получаю пароль ввода строки в форме входа и пытаюсь сопоставить его с проверкой Ha sh ::. В этом случае пропуск должен быть 123123.

Проблема в том, что он всегда возвращает «Пока».

Что я здесь не так делаю?

<?php

namespace App\Http\Controllers\userController;


use App\Model\Hause_users;
use App\User;
use Illuminate\Http\Request;

use Illuminate\Support\Facades\Hash;

use Illuminate\Routing\Controller;


use Illuminate\Support\Facades\Response;


class loginController extends Controller
{
    /**
     * Handle an authentication attempt.
     *
     * @param  \Illuminate\Http\Request $request
     *
     * @return Response
     */
    public function authLogin(Request $request)
    {
       $data = Hause_users::where('username', '=', request('username'))->first();
        $password = ($data['password']);


             // dd($request->password);
        //dd($data['password']);

        $check = Hash::check($request->password, $data['password']);
           if($check){
               return 'welcome';
        }else{
            return 'Bye';
        }

        //echo($pass_in);

        }

}

Спасибо за предложение, я использую метод Ha sh :: make из laravel фреймворка, который на самом деле является закулисным. Я просто могу понять, почему проверка Ha sh ::, предоставленная Laravel, не совпадает с пользовательским вводом с паролем, взятым из моей БД.

Ответы [ 3 ]

0 голосов
/ 16 марта 2020

метод сравнения сравнивает хешированный пароль и введенный пароль, вы должны использовать его следующим образом

$check = Hash::check($request->password,auth()->user()->password);
if($check)
{
// your condition
}
else{
// return what ever you want
}
0 голосов
/ 17 марта 2020

Я нашел проблему, и это было в моем шаблоне лезвия. У меня была некоторая проверка ошибок {{old 'password'}}, которая вызвала неверное столкновение строк со входом. Когда я удалил эту часть value="{{ old('password') }} все работало гладко.

0 голосов
/ 16 марта 2020

Вы должны передать пароль ввода пользователя 1-му аргументу и передать хешированный пароль из БД во 2-й аргумент Hash::check следующим образом:

/**
 * Handle an authentication attempt.
 *
 * @param  \Illuminate\Http\Request $request
 *
 * @return Response
 */
public function authLogin(Request $request)
{
    $data = Hause_users::where('username', '=', request->username)->first();

    if (Hash::check($request->password, $data->password)) {
        return 'welcome';
    } else {
        return 'Bye';
    }
}

См. Laravel документы для получения дополнительной информации.

...