【发布时间】:2018-05-13 08:30:23
【问题描述】:
我正在开发一个 Web 应用程序。在我的应用程序中,我需要将用户登录到 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 块也没有捕捉到错误。
那么,如何阻止 AWS sdk 阻止应用程序抛出 500 状态代码?
【问题讨论】:
-
你能链接
CognitoIdentityProviderClientgithub吗?它是正确的 Laravel 提供者吗?我注意到另一个人的代码,they catch forCognitoIdentityProviderException -
我没有使用 Laravel AWS sdk。我正在使用纯 PHP aws sdk。
标签: php laravel amazon-web-services aws-sdk