reactjs signIn函数在Auth.js(NextAuth.js)中抛出并忽略我的捕获

cgfeq70w  于 5个月前  发布在  React
关注(0)|答案(1)|浏览(53)

我使用的是Next.js 14.0.3和Auth.js 5.0.0-beta.4。
我正在尝试使用Auth.js凭据提供程序。类似于下一个教程所做的here
但是,当尝试使用无效凭据登录时,我会在服务器控制台上抛出错误。
问题是,signIn方法是用try/catch Package 的,所以它不应该像这样抛出。x1c 0d1x
这是我的actions.ts文件。

"use server";

import { signIn } from "@/auth";
import { AuthError } from "next-auth";

export async function authenticate(
  prevState: string | undefined,
  formData: FormData
) {
  try {
    await signIn("credentials", formData);
  } catch (error) {
    if (error instanceof AuthError) {
      switch (error.type) {
        case "CredentialsSignin":
          return "Invalid credentials.";
        default:
          return "Something went wrong.";
      }
    }
    throw error;
  }
}

字符串
下面是我的auth.ts文件:

export const { auth, signIn, signOut } = NextAuth({
  ...authConfig,
  providers: [
    Credentials({
      async authorize(credentials) {
        const validatedCredentials = CredentialsSchema.safeParse(credentials);

        if (validatedCredentials.success) {
          const { username, password } = validatedCredentials.data;

          const { user } = await findUserByUsername(username);

          if (!user) {
            return null;
          }

          const passwordMatch = await bcrypt.compare(password, user.password);

          if (passwordMatch) {
            return user;
          }
        }

        console.log("Invalid credentials.");
        return null;
      },
    }),
  ],
});


我看到auth.ts文件中也记录了Invalid credentials.,所以我100%确定我的authorize方法返回null。

lxkprmvk

lxkprmvk1#

我也遇到了同样的问题。在我的例子中,我需要在auth.ts和actions.ts的顶部添加“use server”来解决这个问题。

相关问题