Php Laravel 5.2-登录不起作用
我有简单的注册码:Php Laravel 5.2-登录不起作用,php,laravel,login,laravel-5,laravel-5.2,Php,Laravel,Login,Laravel 5,Laravel 5.2,我有简单的注册码: $data = [ 'email' => $post['email'], 'password' => Crypt::encrypt($post['password']), ]; $user = User::create($data); $mailer->sendEmailConfirmationTo($user); 这是我的routes.php: Route::group(['middleware' => ['web']], fu
$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';
它总是返回“登录失败”,从不返回“登录成功”。
我能做什么呢?你不需要加密/解密密码,Laravel自己做。你只需要传递普通密码。往下看
$post = $request->all();
if (\Auth::attempt(['email' => $post['email'], 'password' => '1234dfgG')]))
return 'loginSuccess';
return 'loginFailed';
尝试时,Laravel将应用自己的
bcrypt
方法进行加密并匹配密码这是一个可行的示例
$post=$request->all();
如果(\Auth::尝试(['email'=>$post['email'],'password'=>$post['password']]))
返回“登录成功”;
返回“登录失败”代码>
Auth::Attement的文档中说要使用密码作为参数,而不是加密/哈希密码……还有,为什么要使用Crypt来创建可以解密的密码,而不是哈希密码?正如Mark Baker指出的,纯文本密码会传递给Attement方法,因为它需要将它的哈希值与数据库中的哈希值进行比较。密码是散列的,不是加密的。