需要在.Net Core 3中编写有关AWS Cognito预身份验证lambda触发器的帮助,我可以在cognito请求中将正确的属性作为'validationData'属性的一部分进行传递。当验证属性无法满足条件时,我需要将“ UnauthorizedResponse”发送回我的前端。但是,当我尝试从.net核心处理程序返回错误对象时,我最终遇到“ InvalidLambdaResponse”异常。 任何帮助或示例代码都将在很大的程度上为您提供帮助。
这是我结尾的代码段-
public object FunctionHandler(JObject request, ILambdaContext context)
{
LambdaLogger.Log($"JObject: {request}");
var input = request;
var userId = input["userName"];
LambdaLogger.Log($"Calling function: {context.FunctionName}\\n");
LambdaLogger.Log($"Input userid: {userId}\\n");
string strUserId = ((Newtonsoft.Json.Linq.JValue)userId).Value.ToString();
var status = Util.FetchCognitoUser(strUserId); \\call to fetch user properties
LambdaLogger.Log($"Pre auth execution complete");
if (status)
{
return request;
}
else
{
request["response"]["statuscode"] = "400";
request["response"]["statusmessage"] = "NotAuthorizedException";
return request;
}
}
答案 0 :(得分:0)
一些试验和错误终于帮助了我。 它并不像看起来那样困难。 您只需抛出异常即可实现所需的功能。 :)
我只是从上面发布的示例代码的else部分抛出了一个异常。 而且我能够捕获“ PreAuth失败的异常”
else
{
throw new AmazonCognitoIdentityException("PreAuthentication Failure");
}