登录控制器中未定义的数组键"password" (Laravel 8)



我试图自定义我的登录名,但它给我带来了标题中出现的错误。

这是LoginController:中的功能

public function login(Request $request) {
$request->validate([
'username' => 'required|string|email',
'password' => 'required|string',
'remember' => 'boolean',
]);
#:: Undefined array key "password"
if ($this->guard()->attempt(['a_username' => $request->username, 'a_password' => $request->password], $request->has('remember'))) {
return $this->sendLoginResponse($request);
}
return $this->sendFailedLoginResponse($request);
}

问题是为什么我使用这些自定义列,而不是默认情况下laravel附带的列。就是说,我有两个表用于进行身份验证。

在我的数据库中,我有列:a_username(它是电子邮件(a_password(是密码(

这是登录表单:

<form class="js-validation-signin" action="{{ route('login') }}" method="POST">
@csrf
<div class="form-group">
<input type="email" class="form-control form-control-lg form-control-alt py-4" name="username" placeholder="Username" value="{{ old('username') }}">
</div>
<div class="form-group">
<input type="password" class="form-control form-control-lg form-control-alt py-4" name="password" placeholder="Password">
</div>
</form>

谢谢你的耐心,因为我不得不把这个问题从西班牙语翻译成英语

Eloquent用户提供程序包含此代码

public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];

return $this->hasher->check($plain, $user->getAuthPassword());
}

因此,要覆盖您需要的默认功能:

  1. 在用户模型中添加(覆盖(方法getAuthPassword
public function getAuthPassword()
{
return $this->a_password;
}
  1. 更新代码(将a_password更改为password(:
if ($this->guard()->attempt(['a_username' => $request->username, 'password' => $request->password], $request->has('remember'))) {
return $this->sendLoginResponse($request);
}

最新更新