DEV Community

Discussion on: Using Credentials provider with a custom backend in NextAuth.js!

hashinclude72 profile image
Shubham Jaswal

you can also set redirect = false and catch response from signIn function :

const res = await signIn('credentials',
        callbackUrl: `${window.location.origin}/account_page` 
        redirect: false,
if (res?.error) handleError(res.error)
if (res.url) router.push(res.url);
Enter fullscreen mode Exit fullscreen mode

signIn return a Promise which has following structure :

    error: string || undefined,
    status: number,
    ok: boolean,
    url: url || null
Enter fullscreen mode Exit fullscreen mode

you can check more on

brianwachira profile image

How does this work?
I have followed your example and am not getting any response in login page

sawebb profile image
Austin Webb

You are not getting a response because the user isn't being set properly. The following code is able to handle Credentials (user & pass) and Providers auth, while setting jwt and session correctly.

callbacks: {
    jwt: async (token, user) => {
      if (user) {
        token.jwt = user.jwt;
        token.user = user.user;
        token.accessToken = user?.accessToken;
      return Promise.resolve(token);
    session: async (session, token) => {
      session.jwt = token.jwt;
      session.accessToken = token.accessToken ? token.accessToken :
      session.user = token.user ? token.user : session.user; 
      return Promise.resolve(session);
Enter fullscreen mode Exit fullscreen mode
twisha profile image
Twisha Author

Cool! Happy to see it has been added as a feature. Thanks for the update :)

juanda_dev profile image
Juan Martínez

Thank you so much! I hated that the function reloaded the page every time I submit the form