У меня простой регистрационный код:

$data = [
     'email' => $post['email'],
     'password' => Crypt::encrypt($post['password']),
];
$user = User::create($data);
$mailer->sendEmailConfirmationTo($user);

Это мой routes.php:

Route::group(['middleware' => ['web']], function () {
    Route::group(['prefix'=>'auth'], function(){
        Route::get('/', 'AuthController@index');
        Route::post('post', 'AuthController@postLogin');

        Route::group(['prefix'=>'register'], function() {
            Route::get('/', 'AuthController@register');
            Route::post('post', 'AuthController@postRegister');
            Route::get('confirm/{email}/{confirmation_key}', 'AuthController@confirm');
        });
    });
});

А это мой код для входа:

$post = $request->all();

if (\Auth::attempt(['email' => $post['email'], 'password' => Crypt::encrypt($post['password'])]))
    return 'loginSuccess';
return 'loginFailed';

Он всегда возвращает loginFailed, никогда не возвращает loginSuccess. Что я могу сделать?

3
user6184150 18 Апр 2016 в 00:22

2 ответа

Лучший ответ

Это пример должен работать.

  1. Создайте пароль пользователя с помощью функции Hash :: make () при создании пользовательских данных

    Hash :: make ('пароль');

  2. Войдите, используя код ниже.

    $post = $request->all(); if (\Auth::attempt(['email' => $post['email'], 'password'=>$post['password']])) return 'loginSuccess'; return 'loginFailed';

0
Sopheak 18 Апр 2016 в 08:22

Вам не нужно шифровать / расшифровывать пароль, Laravel сделает это сам. Вам просто нужно передать простой пароль. Смотри ниже

$post = $request->all();

if (\Auth::attempt(['email' => $post['email'], 'password' => '1234dfgG')]))
    return 'loginSuccess';
return 'loginFailed';

При попытке Laravel применит свой собственный метод bcrypt для шифрования и сопоставления пароля.

0
Qazi 18 Апр 2016 в 04:11