Estoy un poco confundido sobre la implementación del proveedor de credenciales y las redirecciones. La documentación dice que el proveedor de credenciales no admite una devolución de llamada y es para los proveedores de OAuth. Esto esta bien. Sin embargo, en lugar de permanecer en la página y mostrar un mensaje de error o incluso iniciar sesión como en este video , se redirige a https://localhost/api/auth/callback/[credentials-provider-name] . Lo que ni siquiera incluye el puerto con el que estoy trabajando. Si configuro explícitamente una identificación, la usa al final de la URL en su lugar.
Esto es lo que tengo para el proveedor.
import NextAuth from "next-auth" import CredentialsProvider from "next-auth/providers/credentials" export default NextAuth({ // Configure one or more authentication providers providers: [ CredentialsProvider({ credentials: { username: { label: "Username", type: "text", placeholder: "someuser69" }, password: { label: "Password", type: "password" }, }, name: "User Pass", type: "credentials", async authorize(credentials, req) { // Add logic here to look up the user from the credentials supplied return { id: 2, name: "user", email: "user@gmail.com", } return null; } }) // ...add more providers here ], callbacks: { async jwt({ token, account }) { // Persist the OAuth access_token to the token right after signin if (account) { token.accessToken = account.access_token } return token }, async session({ session, token, user }) { // Send properties to the client, like an access_token from a provider. session.accessToken = token.accessToken return session }, async redirect({ url, baseUrl, }) { console.log(""); return baseUrl; }, async signIn({ user, account, profile, email, credentials }) { return '/home'; } }, session: { jwt: true, maxAge: 30 * 24 * 60 * 60, }, secret: "CHANGE!!!", jwt: { maxAge: 60 * 60 * 24 * 30, secret: "afdsfi", }, })Revisé los documentos y no estoy seguro de si estoy haciendo un descuido masivo aquí. Pero algunas de mis principales confusiones son:
¿Dónde se configura esta devolución de llamada y cómo la desactivo en el proveedor predeterminado (si es posible).
No creo que la función de authorize funcione. Si pongo una consola logueo en ella. No imprime en la terminal. Así que ni siquiera sé si se está llamando.
El problema es que no configuré correctamente la variable NEXTAUTH_URL . Aparentemente, el módulo agrega https si el protocolo no está configurado en la dirección proporcionada. Este es el caso si está utilizando 127.0.0.1 o localhost . La solución para solucionar los problemas de devolución de llamada es pasar el protocolo http no seguro si está utilizando una dirección local para fines de prueba o desarrollo de la siguiente manera:
NEXTAUTH_URL='http://127.0.0.1:3001'