¿Es posible permitir que next-auth devuelva errores de una API y los pase desde el lado del cliente?
Como ejemplo, la API regresa específicamente si el correo electrónico o la contraseña del usuario son incorrectos. En nuestra aplicación móvil, esto funciona muy bien. Aunque en el sitio web, estamos usando Next-auth. Usando el ejemplo de credenciales de la documentación, sería genial cambiar el valor de retorno a un objeto.
import CredentialsProvider from "next-auth/providers/credentials" providers: [ CredentialsProvider({ name: "Credentials", credentials: { username: { label: "Username", type: "text", placeholder: "jsmith" }, password: { label: "Password", type: "password" } }, async authorize(credentials, req) { const user = { id: 1, name: "J Smith", email: "jsmith@example.com" } if (user) { // Any object returned will be saved in `user` property of the JWT return user } else { // Return an object that will pass error information through to the client-side. return { errors: user.errors, status: false } } } }) ]
Por favor, avíseme si hay otra publicación relacionada con esta, ya que no puedo encontrarla en línea.
Sí, esto debería permitirle hacer eso, aunque en la credencial, al pasar los valores a la siguiente autenticación, agregue una redirect:false
Puede encontrar la documentación aquí .
Por lo tanto, su método de inicio de sesión se verá así.
signIn('credentials', { redirect: false, username:'username', password: 'password' })
Su código puede verse así
import CredentialsProvider from "next-auth/providers/credentials" providers: [ CredentialsProvider({ name: "Credentials", credentials: { username: { label: "Username", type: "text", placeholder: "jsmith" }, password: { label: "Password", type: "password" } }, async authorize(credentials, req) { const user = { id: 1, name: "J Smith", email: "jsmith@example.com" } if (user) { // Any object returned will be saved in `user` property of the JWT return user } else { // Return an object that will pass error information through to the client-side. throw new Error( JSON.stringify({ errors: user.errors, status: false })) } } })