如果Auth::attempt
总是返回false
,可能有以下几个原因:
$credentials = [
'email' => $request->email,
'password' => $request->password
];
dd($credentials); // 检查输入的用户名和密码是否正确
if (Auth::attempt($credentials)) {
// 登录成功
} else {
// 登录失败
}
Authenticatable
trait,并且有正确的getAuthPassword
和getAuthIdentifier
方法。use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\AuthenticatableTrait;
}
Bcrypt
。use Illuminate\Support\Facades\Hash;
$credentials = [
'email' => $request->email,
'password' => $request->password
];
if (Auth::attempt($credentials)) {
// 登录成功
} else {
// 登录失败
}
// 检查密码是否匹配
if (Hash::check($request->password, Auth::user()->password)) {
// 密码匹配
} else {
// 密码不匹配
}
Auth::attempt
方法会使用email
字段作为用户名来进行认证。如果你使用其他字段作为用户名,可以在Auth::attempt
方法中通过username
字段来指定。$credentials = [
'username' => $request->username, // 使用其他字段作为用户名
'password' => $request->password
];
if (Auth::attempt($credentials)) {
// 登录成功
} else {
// 登录失败
}
通过检查上述问题,你应该能够解决Auth::attempt
总是返回false
的问题。