未定义的数组键";密码";登录控制器(Laravel 8)

未定义的数组键";密码";登录控制器(Laravel 8),laravel,laravel-8,Laravel,Laravel 8,我试图自定义我的登录名,但它会抛出标题中出现的错误 这是登录控制器中的函数: public function login(Request $request) { $request->validate([ 'username' => 'required|string|email', 'password' => 'required|string', 'remember' => 'boolean', ]); #:: Undefined ar

我试图自定义我的登录名,但它会抛出标题中出现的错误

这是
登录控制器中的函数:

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_密码
(是密码)

这是登录表单:

<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>

@csrf

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

雄辩的用户提供者包含此代码

public function validateCredentials(UserContract $user, array $credentials)
{
    $plain = $credentials['password'];
   
    return $this->hasher->check($plain, $user->getAuthPassword());
}
因此,要覆盖默认功能,您需要:

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