我需要通过email or phone
登录的想法是我在模型用户中使用了此方法:
public function findForPassport($identifier)
{
return $this->where('email', $identifier)->orWhere('phone', $identifier)->first();
}
但是当我登录时显示错误!
我的控制器代码:
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
}
我知道$credentials
中有问题,但无论是电子邮件还是电话号码,都不知道如何解决
任何帮助吗?
这是我的使用方式
/**
* Login user and create token
*
* @param [string] email
* @param [string] password
* @param [boolean] remember_me
* @return [string] access_token
* @return [string] token_type
* @return [string] expires_at
*/
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean',
]);
$credentials = request(['email', 'password']);if (!Auth::attempt($credentials)) {
return response()->json([
'message' => 'Unauthorized',
], 401);
}
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;if ($request->remember_me) {
$token->expires_at = Carbon::now()->addWeeks(1);
}
$token->save();return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString(),
]);
}
尝试通过数组传递$凭据。
$credentials = [
'email' => $request['email'],
'password' => $request['password'],
];
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);