在AWS Amplify/amplify-js中,当调用forgotPassword()方法时,如果提供的用户名无效,方法不会返回错误。相反,它会返回一个成功的响应,但实际上没有发送任何重置密码的请求。
要解决这个问题,您可以使用以下代码示例来检查用户名的有效性并处理错误:
import { Auth } from 'aws-amplify';
async function handleForgotPassword() {
const username = 'invalidUsername';
try {
// 检查用户名的有效性
const { Users } = await Auth.listUsers({ filter: { username: { contains: username } } });
if (Users.length === 0) {
throw new Error('Invalid username');
}
// 发送重置密码请求
await Auth.forgotPassword(username);
console.log('重置密码请求已发送');
} catch (error) {
console.error('出现错误:', error.message);
// 处理错误
}
}
handleForgotPassword();
在上面的代码中,我们首先使用Auth.listUsers()
方法来检查提供的用户名的有效性。如果该用户名不存在,我们手动抛出一个错误。否则,我们使用Auth.forgotPassword()
方法发送重置密码请求。
如果用户名无效,您可以根据自己的需求在catch
块中处理错误。