Я пытаюсь войти в систему, используя Laravel, но у меня возникли проблемы

Вот как я спасаю своего пользователя:

$user = User::create(array('email'=> $_REQUEST['email'], 'password' => encrypt($password), 'firstname'=> $_REQUEST['firstname'], 'lastname'=>$_REQUEST['lastname'], 'unecrypted'=> $password));

Теперь, как вы можете видеть, я использую encrypt($password), это создает следующую запись в моей базе данных:

'39', 'myMail@mail.dk', 'eyJpdiI6Iis5RTRQdjBCV1piSVEwN0ZwRDQxa1E9PSIsInZhbHVlIjoiTnY1UnJ0YkVqZkY0VlhzdWhBK1QzUWxIdTc0SXNBRHlPcHQrcXpicmZHND0iLCJtYWMiOiJhODM2ZDI4ZTE5ZjY5YjlkNmQyOGIyYTdiOTU3NzFkNmNmZWNlOGVhMDNjYjY0ZTFiZjZiOGJlNWM3N2U4MmViIn0=', '2018-01-01 13:45:51', '2018-01-01 13:45:51', NULL, 'Marc', 'Rasmussen'

Что выглядит правильно.

Тогда у меня есть следующие LoginController:

    namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}

Однако, когда я пытаюсь войти в систему со своим паролем (который, как я знаю, верен), я получаю следующее сообщение:

These credentials do not match our records.

Кто-нибудь может увидеть, что я сделал не так?

1
Marc Rasmussen 1 Янв 2018 в 16:52

2 ответа

Лучший ответ

Используйте помощник bcrypt() для шифрования пароля:

'password' => bcrypt($password),
3
Alexey Mezenin 1 Янв 2018 в 13:54

Если вы хотите использовать свой собственный метод шифрования пароля, вы не используете встроенную в laravel функциональность Auth Becuase laravel Auth match password только тогда, когда пароль зашифрован с помощью метода bcrypt, как bcrypt($password);

Если вы хотите использовать собственный метод шифрования, вам необходимо перезаписать функцию входа в систему Auth и создать собственную логику входа. Надеюсь, вы понимаете, о чем я хочу сказать. Спасибо.

0
Rits 1 Янв 2018 в 14:48