我正在开发一个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状态代码?
答案 0 :(得分:0)
最后,我找到了解决方案。 Laravel使用命名空间。所以,我不需要在try catch块中只使用Exception,而是需要放置" \"作为前缀。所以try catch变成这样。
var optionsArr = [];
var questionID;
$(document).on('click', '.js-answer-check', function(e){
if ($(this).is(':checked')){
questionID = $(this).data('question');
var optionID = $(this).data('id');
optionsArr.push(optionID);
} else {
var removeItem = $(this).data('id');
optionsArr = $.grep(optionsArr, function(value){
return value != removeItem;
});
}
});