我正在开发一个 Next.js 项目,使用 NextAuth 进行身份验证。我遇到一个问题,登录组件中对 SignIn 的调用似乎没有触发我的凭据提供程序中的授权方法。
以下是我的 ...nextauth.js 文件的摘录:
CredentialsProvider({
name: "credentials",
credentials: {
// ... (details omitted for brevity) ...
},
async authorize(credentials, req) {
console.log("credentials", credentials);
// ... (details omitted for brevity) ...
const res = await fetch(`https://...`, {
method: 'POST',
body: urlencoded,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
});
const user = await res.json();
if (res.ok && user) {
return Promise.resolve(user);
}
return Promise.resolve(null);
}
})
以下是我在登录组件中调用 SignIn 的方法:
const onSubmit = async () => {
const result = await signIn('credentials', {
username: emailRef.current?.value,
password: passwordRef.current?.value,
});
console.log("result", result);
};
当我尝试登录时,授权方法中的 console.log 永远不会触发,这表明登录没有按预期触发授权。此外,signIn 返回未定义。
我已检查提供程序名称是否已正确设置为“凭据”,并且所有必要的环境变量均已正确设置。服务器日志中没有错误。
谁能帮助我理解为什么登录没有触发授权以及如何解决此问题?