我知道这是一个非常通用的标题,但在阅读了所有出现的标题后,他们都没有提到我所拥有的问题。基本上,我遇到了有关使用Auth::attempt()
的问题。我已经检查$credentials
以确保我使用的是正确的密码,而且确实是。
这不起作用 -
public function store(Request $request)
{
$credentials = ['email' => $request->email, 'hash' => $request->password];
if (Auth::attempt($credentials)) {
return redirect()->home();
}
}
但是从DB中检索散列密码并使用它 -
if (Hash::check('password123', $hashedPassword)) {
echo "works";
}
我有办法检查Auth::attempt
的哪些部分导致无效凭据吗?
答案 0 :(得分:1)
来自手册:https://laravel.com/docs/5.4/authentication#authenticating-users
请注意,您需要通过密码'而不是'哈希'。
<?php
public function authenticate()
{
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// Authentication passed...
return redirect()->intended('dashboard');
}
}
<强> 修改 强>
请参阅之前的答案 - How to change / Custom password field name for Laravel 4 and Laravel 5 user authentication
看起来你应该继续传递密码&#39;通过Auth ::尝试,但您需要更改用户模型。
现在在用户模型(app / models / User.php)文件中,您需要添加 以下功能:
public function getAuthPassword() {
return $this->hash;
}
答案 1 :(得分:0)
使用此代码
$password = "test";
$hash = '$2y$10$fXJEsC0zWAR2tDrmlJgSaecbKyiEOK9GDCRKDReYM8gH2bG2mbO4e';
if (password_verify($password, $hash)) {
echo "Success";
}
else {
echo "Error";
}