【发布时间】:2017-05-24 14:05:03
【问题描述】:
当新用户注册后,它会自动登录,这工作正常。我正在像这样散列密码:
'$newUser->password = bcrypt($request->get('password'));'
它成功地对密码进行哈希处理,我的用户表有密码列,即 varchar 255。我在用户表中也有 remember_token 字段。 'dd($request->all())' 返回:
array:3 [
"email" => "info@hotmail.com"
"_token" => "QIwnHacApWg3SotAXtoCCMFNK3FYFoFBAv2LSx4c"
"password" => "adminadmin"
]
而且,根据用户表记录,电子邮件和密码是 100% 正确的。 请求是 Ajax,所以我有以下 JS 代码:
$('.post-btn').click(function(){
$.ajax({
url: '/sign-in',
type: "post",
data: {'email':$('input[name=email]').val(), '_token': $('input[name=_token]').val(),'password': $('input[name=password]').val()},
success: function(data){
console.log(data);
window.location = '/';
}
});
});
身份验证方法:
public function authenticate(Request $request) {
$validator = Validator::make($request->all(),
[
'email' => "required",
'password' => 'required'
]
);
$user = array('email' => $request->get('email'),'password' => $request->get('password'));
if (Auth::attempt($user)) {
$response = array(
'status' => 'success',
'msg' => 'Successfully Logins.',
);
$user = new \App\User;
if(Auth::check()) {
}
return \Response::json($response);
} else {
$response = array(
'status' => 'failed',
'msg' => 'Invalid Credentials!',
);
return \Response::json($response);
}
}
输入字段名称正确。
我还缺少什么?
【问题讨论】:
-
为什么不用
Hash::make来散列密码,这是laravel默认的。 -
在您注册帐户时,散列似乎不起作用。当你尝试登录时,Laravel 会对你的输入进行哈希处理,并将哈希值与数据库中的内容进行比较。哈希和“adminadmin”不一样,所以失败了。
-
@jycr753 让我试试
-
您的 ajax 请求正在发送
HTTP POST。$request->get('email');用于HTTP GET。请改用$request->input('email');。 -
使用
$request->email或$request->input('email')代替$request->get('email')
标签: php laravel authentication login laravel-5.3