Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel » Browser Tests » 26.03.2017 21:23:01

Evgenii
Ответов: 0

Расскажите как настраивать Browser Tests
Laravel Dusk - Что не делаю не работает. Выдаёт ошибку MethodNotAllowedHttpException.
Пробовал ставить пакет Modelizer/Laravel-Selenium так там очень мало методов, что не напишешь - ошибка "Не поддерживается".
Посоветуйте что почитать, кто чем (какими пакетами) пользуется.

#2 Re: Laravel 5.x » Authentication 5.3 » 21.03.2017 16:54:44

constb пишет:

я бы просто сделал – открыл бы стандартную коробочную авторизацию конкретной версии фреймворка и сравнил бы со своим кодом. если используется стандартная авторизация (или допиленная на её основе) – изменения сразу будут заметны. все нужные трейты лежат в /vendor/laravel/framework/src/Illuminate/Foundation/Auth, шаблоны на основе которых генерится авторизация через php artisan make:auth – в /vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make, шаблон проекта, который использует laravel new <xxx> – в репозитории laravel/laravel на гитхабе

Так я и делал. Именно на гитхабе в контролерах написано первичное шифрование. А папки vendor там нет что бы сравнить что подгрузил мне composer.

#3 Re: Laravel 5.x » Authentication 5.3 » 21.03.2017 15:16:12

constb пишет:

а в эту функцию он как попадает? то есть хэшер где-то потом вызывается кодом который с credentials работает? ну тогда ладно. я просто не помню детали работы стандартной авторизации, может правда поменяли где-то в какой-то из версий. тогда извини, если в базе пароль шифрованный лежит, тогда я был неправ

Я сам уже два дня разбираюсь с этим xdebug меня привёл в эту функцию когда я искал когда же входящий пароль шифруют. Вопрос зачем при регистрации его шифруют дважды, а при сравнении вообще не шифруют. Не могу понять как должно быть в оригинале. Зачем ещё одно шифрование на входе. И почему результат сравнения false если так задумано. Вот и спрашиваю зачем сравнивают дважды шифрованный с не шифрованным. В мануале password_verify() написано на входе входное значение и просто хеш.

#4 Re: Laravel 5.x » Authentication 5.3 » 21.03.2017 14:37:16

Вот тут vendor\laravel\framework\src\Illuminate\Hashing\BcryptHasher.php при сохранении в базу он ещё раз шифруется этой же функцией.

public function make($value, array $options = [])
    {
        $cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;

        $hash = password_hash($value, PASSWORD_BCRYPT, ['cost' => $cost]);

        if ($hash === false) {
            throw new RuntimeException('Bcrypt hashing not supported.');
        }

        return $hash;
    }

И после того как убрал, я проверил, что в базу ложится шифрованный и чистый пароль. Может я чего не догоняю. Поясните , пожалуйста.

#5 Re: Laravel 5.x » Authentication 5.3 » 21.03.2017 13:43:14

Такая же история и с восстановление пароля
переопределяем метод убираем bcrypt()

    protected function resetPassword($user, $password)
    {
        $user->forceFill([
            'password' => bcrypt($password),
            'remember_token' => Str::random(60),
        ])->save();

        $this->guard()->login($user);
    }

Думал решить в обратном направлении добавить bcrypt() при проверке пароля. Не помогло. Пришлось убирать.

#6 Re: Laravel 5.x » Authentication 5.3 » 21.03.2017 12:13:50

Сам докопал. Но может кому пригодится.
При создании user пароль RegistersUsers::create пароль шифруется  bcrypt()

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

а при аутентификации прилетает для сравнения без шифрования bcrypt().

#7 Laravel 5.x » Authentication 5.3 » 21.03.2017 11:37:35

Evgenii
Ответов: 9

Добрый день.
Подымал старый сайт с 5.1 -> 5.2 -> 5.3
На 5.2 работает всё нормально.
Регистрирую нового пользователя. Выхожу logout/
При повторной аутентификации выдаёт "Пользователь с такими данными не найден".
В базе user есть. Из базы достаётся нужный user для сравнения. Но password_verify($password, $hash) возвращает false.
Может кто подскажет хоть в каком направлении копать.

Подвал раздела