为何Cognito的CUSTOM_AUTH流不返回NewDeviceMetadata,无法实现设备记忆?
问题原因分析
核心原因:自定义认证流(CUSTOM_AUTH)未手动实现设备跟踪逻辑
虽然你已经在用户池控制台开启了设备跟踪(设为Always),但**CUSTOM_AUTH流不会自动触发Cognito的设备跟踪流程**,必须通过自定义Lambda触发器手动处理相关逻辑,具体细节如下:
缺少触发器中的设备元数据注入:
在自定义认证的Define Auth Challenge和Create Auth ChallengeLambda触发器中,需要手动添加设备跟踪的处理逻辑,验证通过后要在响应中返回deviceKey和deviceGroupKey这两个核心设备元数据字段。如果没有这一步,Cognito不会返回NewDeviceMetadata给Amplify SDK。PASSWORD_VERIFIER步骤未关联设备参数:
当流程走到PASSWORD_VERIFIER验证环节时,默认的自定义认证逻辑不会自动关联设备跟踪参数。需要在处理密码验证的触发器逻辑里,主动获取并返回当前设备的元数据,否则Amplify无法识别到设备跟踪已启用。Amplify SDK的依赖逻辑限制:
Auth.rememberDevice()方法的执行前提是SDK能从认证响应中获取到NewDeviceMetadata。如果该字段缺失,SDK会直接判定用户池未配置设备跟踪,抛出你看到的Device tracking has not been configured in this User Pool错误,完全忽略控制台的配置。
内容的提问来源于stack exchange,提问作者adNetDeveloper
相关产品推荐
相关产品推荐

