vvo/iron-session

TypeError: req.session.touch is not a function with Next.js 13.1.1

smurf-ss opened this issue · 4 comments

brc-dd commented

Can you share relevant code?

Can you share relevant code?

I created /api/login follow example and I need store session SSR only.

package.json

"next": "13.1.1"
"react": "18.2.0"
"react-dom": "18.2.0"

image

@smurf-ss
i found next13 api components solutions.
try this code.

`/api/login.ts`

import { NextApiRequest } from 'next'
import { User, sessionOptions } from '@/utils/session'
import { getIronSession } from 'iron-session';

export async function GET(req: NextApiRequest) {
    const res = new Response("Hello, Next.js!")

    console.log("connect to login route")

    const session = await getIronSession(req, res, sessionOptions);
    console.log("before ", session, session.user === undefined)
    
    if (session.user === undefined) {
        console.log("set user")
        const user = { isLoggedIn: true, login: "sample user", avatarUrl: "avatar_url" } as User
        session.user = user
        await session.save()
    }
    console.log("after ", session)

    return res
}

`user.ts`
export type User = {
    isLoggedIn: boolean
    login: string
    avatarUrl: string
  }
  
vvo commented

Hey there, iron-session v8 is live now 👍 https://github.com/vvo/iron-session and compatible with app router. We even have demos: https://get-iron-session.vercel.app/

Good luck.