在我的项目中,我将通过发送短信确认码来验证用户电话号码。确认后,我必须将登录请求发送到我的laravel应用。在Laravel Passport文档中有登录用户的示例请求:
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => '[email protected]',
'password' => 'my-password',
'scope' => '',
],
]);
我在这里如何设置为username
用户phone
并删除password
?
如果password
Laravel Passport中的必填字段,则可以从客户端发送任何密码,并在请求用户凭据password
之前取消请求用户的attempt
权限。但是我必须在哪里输入密码?
我已经厌倦了零钱LoginController
但没有工作。
LoginController
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string'
]);
}
protected function credentials(Request $request)
{
$params = [
'password' => '12345678',
];
$request->request->add($params);
return $request->only($this->username(), 'password');
}
public function username()
{
return 'phone';
}
用户模型中的usefindForPassport方法。
它以用户名作为参数,并返回用户模型
已经在这里回答
class User extends Authenticatable
{
use Notifiable, HasApiTokens;
// Set as username any column from users table
public function findForPassport($username)
{
$customUsername = 'phone';
return $this->where($customUsername, $username)->first();
}
// Owerride password here
public function validateForPassportPasswordGrant($password)
{
$owerridedPassword = 'password';
return Hash::check($password, $this->password);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句