DEV Community

Discussion on: Easy user authentication with Next.js

Collapse
 
tsm012 profile image
Tsm012

Love the simplicity. However, after I am successfully authenticated, my user session is not available inside my getServerSideProps function, so a 404 is always returned even after a successful authentication and redirect. Any thoughts on why:

const user = req.session.get("user");

would work in the sessions.js file but be unavailable in the getServerSideProps function?

Collapse
 
mnengwa profile image
mnengwa • Edited

HI, @tsm012. How did you solve the above issue? I am experiencing the same issue.

Create a util in utils/cookies.js

import {withIronSession} from 'next-iron-session';

const cookie = {
    cookieName: process.env.COOKIE_NAME,
    password: process.env.COOKIE_SECRET,
    cookieOptions: {secure: process.env.NODE_ENV === 'production'},
};

export const guard = (handler) => {
    return withIronSession(handler, cookie);
};

export default cookie;
Enter fullscreen mode Exit fullscreen mode

Implement lookup logic

....
req.session.set('user', { user });

// persist session value
await req.session.save();

console.log(req.session.get('user'));
return res.status(201).json({success, message});
Enter fullscreen mode Exit fullscreen mode

Attempt to access the session value

export const getServerSideProps = guard(async (ctx) => {
    const {req} = ctx;

    const session = req.session.get();

    console.log({session});

    return {redirect: {destination: '/sign-in', permanent: false}};
});
Enter fullscreen mode Exit fullscreen mode

At this point, the session is empty e.g { }

Collapse
 
kibaekkimm profile image
Kibaek Kim

In my case, different cookieNames property.
because i just copied and paste code above.