【发布时间】:2018-05-08 01:18:46
【问题描述】:
我想使用user_password 而不仅仅是password 作为我的API 数据库的密码列的名称。所以这里是login() 方法的代码来检索我的PassportController 中的令牌:
public function login() {
if (Auth::attempt(['user_login' => request('login'), 'password' => request('user_password')])) {
$user = Auth::user();
$success['token'] = $user->createToken('ToutelaBreizh')->accessToken;
return response()->json(['success' => $success], $this->successStatus);
} else {
return response()->json(['error' => 'Unauthorised.'], 401);
}
}
对该控制器的请求参数为login和password。
问题是当我转到与此控制器关联的路由时,比如说POST /api/login。我收到此错误:
ErrorException: Undefined index: password in file ... EloquentUserProvider.php on line 133
[堆栈跟踪的第一行...]
- ... PassportController.php:21
我的 PassportController 中的第 21 行是我在上面发布的登录功能的第二行,实际上,password 字段在我写的凭据中没有通知:我写了user_password 而不是password,但是字符串password 硬编码在 EloquentUserProvider.php 的第 133 行:
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
按照this answer 的建议,我尝试覆盖User.php 模型中的validateForPassportPasswordGrant($password),但没有帮助:
public function validateForPassportPasswordGrant($password)
{
return Hash::check($password, $this->user_password);
}
我应该如何在我的数据库中有user_password 而不是password?
感谢您的帮助。
【问题讨论】:
标签: php laravel laravel-passport