Как остановить CognitoIdentityProviderException от возврата 500 кодов состояния в AWS PHP SDK - PullRequest
0 голосов
/ 09 мая 2018

Я занимаюсь разработкой веб-приложения. В моем приложении мне нужно авторизовать пользователя в системе AWS cognito. Я могу войти в систему успешно. Но единственная проблема состоит в том, что когда имя пользователя и пароль, предоставленные пользователем, недействительны, моя среда Laravel убивает приложение, возвращающее 500 внутренних кодов состояния сервера. Но я хочу сделать что-то еще, когда имя пользователя и пароль не действительны. Я попытался с помощью блока try catch, но это не переопределило ошибку. Пожалуйста, смотрите мой код ниже.

try{

                $client = new CognitoIdentityProviderClient([
                    'version' => 'latest',
                    'region' => env('AWS_REGION', '')
                    'credentials' => [
                        'key'    => env('AWS_IAM_KEY', ''),
                        'secret' => env('AWS_IAM_SECRET', '')
                    ]
                ]);

                $result = $client->adminInitiateAuth([
                    'AuthFlow' => 'ADMIN_NO_SRP_AUTH',
                    'ClientId' => COGNITO_APP_CLIENT_ID,
                    'UserPoolId' => COGNITO_USER_POOL_ID,
                    'AuthParameters' => [
                    'USERNAME' => $request->email,
                    'PASSWORD' => $request->password,
                ],
                ]);
                //Error thrown here if the  username and password are not valid.
                //continue

            }
            catch(Exception $e)
            {
                //I want to do something here if the error is thrown because of the invalid credentials without killing the app by throwing 500 status code.
            }

Как видно из приведенного выше кода, если учетные данные пользователя недействительны, SDK выдаст ошибку. Это убьет приложение, вернув 500 кодов состояния. Я не хочу останавливаться на достигнутом. Итак, я использовал блок try catch, чтобы перехватить ошибку и продолжить в коде. Но блок try catch также не перехватывает ошибку.

Это скриншот. enter image description here

Итак, как я могу остановить AWS SDK от остановки приложения, выдающего код состояния 500?

1 Ответ

0 голосов
/ 13 мая 2018

Наконец-то я нашел решение. Laravel работает с пространствами имен. Таким образом, вместо использования только Exception в блоке try catch мне нужно было поставить "\" в качестве префикса. Так что попытка улова становится такой:

try{
   //code
}
catch(\Exception $e) //pay attention to the "\"
{
}
...