Laravel Hash: проверка всегда возвращает false - PullRequest
0 голосов
/ 25 октября 2019

Я делаю dd () Dump and Die, и он возвращает мне разные хэши. Я не знаю, причина здесь в том, что мой контроллер и мой Сеидер не могут обнаружить ошибку, но я учусь, как обрабатывать создание laravelмой первый API. *

<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Auth;
use App\Hash;

class ApiLoginController extends Controller
{
    public function login(Request $request){
        $usuario = User::where('email', $request->email)->first();

        if($usuario && Hash::check($request->senha, $usuario->password))
        {
            return response()->json($usuario);
        }
        return response()->json(['messagem' => 'Erro']);

    }
}
<?php

use Illuminate\Database\Seeder;
use App\User;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {


        $user = new User;
        $user->name = 'Hernandes';
        $user->email = 'hernandes@gmail.com';
        $user->password = bcrypt('12345');
        $user->save();
    }
}

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

ApiLoginController

<?php

    namespace App\Http\Controllers;

    use Hash;
    use App\User;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Auth;


    class ApiLoginController extends Controller
    {
        public function login(Request $request){
            $usuario = User::where('email', $request->email)->first();

            if($usuario && hash::check($request->senha, $usuario->senha)){
                return response()->json($usuario);
            }
            return response()->json(['messagem' => 'Erro']);

        }


    }

UsersTableSeeder

<?php

    use Illuminate\Database\Seeder;
    use App\User;

    class UsersTableSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {


            $user = new User;
            $user->name = 'Hernandes';
            $user->email = 'hernandes@gmail.com';
            $user->password = Hash::make('password');        
            $user->save();
        }



}

Ответы [ 2 ]

1 голос
/ 25 октября 2019

В вашем контроллере есть следующие проблемы:

if($usuario && hash::check($request->senha, $usuario->senha)){

  1. hash::check() должно быть Hash::check()
  2. Вы используете $usuario->senha. Но в сеялке вы сохраняете поле как password. Какой из них правильный?
  3. Вид лезвия или запрос в вопросе не отображаются. Убедитесь, что вы передаете пароль в поле под названием senha. В противном случае вы не получите никакого значения в $request->senha.

Совет: Перед проверкой хэша вы можете увидеть, содержат ли они правильное значение, сначала используя dd($request->senha, $usuario->senha);.

0 голосов
/ 25 октября 2019

Вы шифруете значение при сохранении и проверяете значение Hash на контроллере входа. Это два разных алгоритма. Смотрите мой комментарий на оригинальный вопрос для получения дополнительной информации. Измените метод user-> save на password = Hash :: make ('userpassword') и проверьте хэш в контроллере входа, или расшифруйте пароль в контроллере входа и оставьте свой метод сохранения пользователем таким же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...