For some reason getServerSession works on POST route but not on GET route.
import { getServerSession } from "next-auth"
import { authOptions } from "../../auth/[...nextauth]/route"
import { NextResponse } from "next/server"
export async function GET(){
const session = await getServerSession(authOptions)
console.log("Session:", session)
console.log("UserID:",session?.user.id)
return NextResponse.json({posts: []}, {status: 200})
}
import { getServerSession } from "next-auth"
import { NextRequest, NextResponse } from "next/server"
import { authOptions } from "../../auth/[...nextauth]/route"
export async function POST(req: NextRequest){
const session = await getServerSession(authOptions)
if(!session) return NextResponse.json({message: "You don't have persmision!"}, {status: 401})
//other code...
}
tried to mimic POST route, still same result.
Edit: It works on /api, but doesnt in /api/posts/* for some reason, can this be some kind of routing problem ?
Edit2: Doesn't work on postman, but works when calling api trough browser....?
Solution: If you need session on server side in route, you need to add headers.
import { headers } from "next/headers"
Inside fetch:
headers: Object.fromEntries(headers())