laravel - LoginController(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 默认附带的列的问题。是我有 2 个用于身份验证的表。
在我的数据库中,我有以下列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>
感谢您的耐心等待,因为我必须将这个问题从西班牙语翻译成英语。:)
解决方案
雄辩的用户提供者包含此代码
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;
}
- 更新您的代码(更改
a_password
为password
):
if ($this->guard()->attempt(['a_username' => $request->username, 'password' => $request->password], $request->has('remember'))) {
return $this->sendLoginResponse($request);
}
推荐阅读
- javascript - 从 JSON 响应中获取图像
- android - 如何设置或更改通知按钮位置
- node.js - 邮递员没有渲染我用快递写的 HTML 页面
- xaml - 如何垂直对齐 XAML UWP 复选框
- r - 以灰度绘制回归线
- javascript - 如何创建一个按钮来删除一行?
- tensorflow - TensroFlow2 和 Keras 中不同的前向和后向传播
- python - python中的“大于”或“等于”与“等于”或“大于”
- rust - 在 Rust 中推送运行时操作以编译时间?
- c# - 如何在 net core 中使用 httpclient 对 Amazon SQS 队列进行 FIFO 请求