jpt*_*431 2 php laravel laravel-5
我正在尝试创建一个登录页面,在其中检查密码。这种方法不久前就可以使用了,但现在它给了我以下错误:
Trying to get property 'password' of non-object
Run Code Online (Sandbox Code Playgroud)
问题在于检索和检查散列密码。但是,我找不到错误。有人可以帮我吗。我的代码如下:
public function logs_in(Request $request){
$email = $request->input('email');
$password = $request->input('password');
$hashedPassword = User::where('email', $email)->first();
if(Hash::check($password, $hashedPassword->password)){
$request->session()->put('success');
return redirect()->route('admin');
} else {
return redirect()->route('login')->with('login_error', 'Invalid
credentials entered');
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着数据库中没有给定电子邮件的用户,此查询的结果是null
:
User::where('email', $email)->first()
Run Code Online (Sandbox Code Playgroud)
因此,将代码更改为:
if ($hashedPassword && Hash::check($password, $hashedPassword->password)) {
Run Code Online (Sandbox Code Playgroud)
或者使用optional()
助手:
if (Hash::check($password, optional($hashedPassword)->password)) {
Run Code Online (Sandbox Code Playgroud)