如果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的问题。