使用JWT身份验证凭据的Laravel API(用户名/电子邮件)

使用JWT身份验证凭据的Laravel API(用户名/电子邮件),laravel,jwt,Laravel,Jwt,我正在使用laravel和JWT Auth将我的laravel项目连接到mobile,这是我在laravel的api控制器 public function login(Request $request) { $credentials = $request->only('email', 'password'); try { // attempt to verify the credentials and create a token for the user

我正在使用laravel和JWT Auth将我的laravel项目连接到mobile,这是我在laravel的api控制器

public function login(Request $request) {
    $credentials = $request->only('email', 'password');

    try {
        // attempt to verify the credentials and create a token for the user
        if (! $token = JWTAuth::attempt($credentials)) {
            return response()->json(['error' => 'invalid_credentials'], 401);
        }
    } catch (JWTException $e) {
        // something went wrong whilst attempting to encode the token
        return response()->json(['error' => 'could_not_create_token'], 500);
    }

    // all good so return the token
    $user = Sentry::authenticate($credentials, false);

    return response()->json([
        'code' => '200',
        'message' => 'success',
        'last_updated' => $user->updated_at->format("Y-m-d\TH:i:s\Z"),
        'data' => [
            'id' => $user->id,
            'first_name' => $user->first_name,
            'last_name' => $user->last_name,
            'email' => $user->email,
            'username' => $user->username,
            'token' => $token
        ]
    ]);
}
但是如何使用此JWT的电子邮件或用户名设置凭据?

如果您使用的是
“tymon/JWT auth”
包,那么您只需将
用户
对象传递给
JWTAuth
类和bam!,您可以获得
JWT
令牌作为回报,您可以使用该令牌让用户浏览应用程序

$user = User::where('email', $email)
->orWhere('username', $username)
->first();

$token = null;
if (!$token = JWTAuth::fromUser($get_info)) {
   return $this->respondInternalError( 'Can\'t generate the JWT token right now, try again later!', 'object', 400);
}

return response()->json([
    'code' => '200',
    'message' => 'success',
    'last_updated' => $user->updated_at->format("Y-m-d\TH:i:s\Z"),
    'data' => [
        'id' => $user->id,
        'first_name' => $user->first_name,
        'last_name' => $user->last_name,
        'email' => $user->email,
        'username' => $user->username,
        'token' => $token
    ]
]);

您可以使用电子邮件或以下格式登录

公共功能登录(请求$Request)
{
//验证传入请求
$this->validate$请求[
'email_phone'=>'required | string',
“密码”=>“必需|字符串”,
]);
试一试{
$login\u type=filter\u var($request->email\u phone,filter\u VALIDATE\u email)?'email':'phone';
//返回$login\u type;
$credentials=[$login\u type=>$request->email\u phone,'password'=>$request->password];
if(!$token=Auth::trunt($credentials)){
return response()->json($this->customResponse(“失败”、“未经授权”),401);
}
返回$this->respondWithToken($token);
}捕获(JWTE异常$e){
return response()->json($this->customResponse(“失败”,“出现错误,请与支持部门联系。”,$user),500);
}
}

可能对你有帮助。你明白了吗>@Albert是的,我明白了out@yudijohn你是怎么做到的请分享我需要它@你是怎么做到的?