getSessionCookie and getCookieCache always null
I'm having issue with middleware and getSessionCookie in next15
Here's my middleware.ts:
import { getCookieCache, getSessionCookie } from 'better-auth/cookies';
import createMiddleware from 'next-intl/middleware';
import { NextRequest, NextResponse } from 'next/server';
import { PROTECTED_ROUTES, ROUTES } from './constants/urls.const';
import { routing } from './i18n/routing';
const intlMiddleware = createMiddleware(routing);
export default async function middleware(request: NextRequest) {
const { nextUrl } = request;
const allCookies = request.cookies.getAll();
const sessionCookie = getSessionCookie(request, {
cookieName: 'session_token',
cookiePrefix: 'Secure-auth',
});
const session = await getCookieCache(request);
const betterAuthCookie = request.cookies.get('Secure-auth.session_token');
const isLoggedIn = !!betterAuthCookie;
const isOnProtectedRoute = PROTECTED_ROUTES.includes(nextUrl.pathname);
const isOnAuthRoute = nextUrl.pathname === ROUTES.LOGIN;
if (isOnProtectedRoute && !isLoggedIn) {
return NextResponse.redirect(new URL(ROUTES.LOGIN, request.url));
}
if (isOnAuthRoute && isLoggedIn) {
return NextResponse.redirect(new URL(ROUTES.PROFILE, request.url));
}
return intlMiddleware(request);
}
export const config = {
matcher: ['/((?!api|_next|_vercel|.*\\..*).*)', '/([\\w-]+)?/users/(.+)'],
runtime: 'nodejs',
};
import { getCookieCache, getSessionCookie } from 'better-auth/cookies';
import createMiddleware from 'next-intl/middleware';
import { NextRequest, NextResponse } from 'next/server';
import { PROTECTED_ROUTES, ROUTES } from './constants/urls.const';
import { routing } from './i18n/routing';
const intlMiddleware = createMiddleware(routing);
export default async function middleware(request: NextRequest) {
const { nextUrl } = request;
const allCookies = request.cookies.getAll();
const sessionCookie = getSessionCookie(request, {
cookieName: 'session_token',
cookiePrefix: 'Secure-auth',
});
const session = await getCookieCache(request);
const betterAuthCookie = request.cookies.get('Secure-auth.session_token');
const isLoggedIn = !!betterAuthCookie;
const isOnProtectedRoute = PROTECTED_ROUTES.includes(nextUrl.pathname);
const isOnAuthRoute = nextUrl.pathname === ROUTES.LOGIN;
if (isOnProtectedRoute && !isLoggedIn) {
return NextResponse.redirect(new URL(ROUTES.LOGIN, request.url));
}
if (isOnAuthRoute && isLoggedIn) {
return NextResponse.redirect(new URL(ROUTES.PROFILE, request.url));
}
return intlMiddleware(request);
}
export const config = {
matcher: ['/((?!api|_next|_vercel|.*\\..*).*)', '/([\\w-]+)?/users/(.+)'],
runtime: 'nodejs',
};
2 Replies
And here’s the console output:
getSessionCookie and getCookieCache always null😩
MIDDLEWARE DEBUG: {
isOnAuthRoute: false,
betterAuthCookie: true,
betterAuthCookieValue: 'F9re4fIzdHuMBr99Mie3XVruiBiShEcf.dnBeFi7f+wzId83kiOxBlcsIX0K71O3aT9icxq3clgA=',
url: '/profile',
allCookiesCount: 3,
allCookies: [
{ name: 'NEXT_LOCALE', hasValue: true },
{ name: 'catalog-view-preference', hasValue: true },
{ name: '__Secure-auth.session_token', hasValue: true }
],
sessionCookie: null,
session: null,
isLoggedIn: true
}
MIDDLEWARE DEBUG: {
isOnAuthRoute: false,
betterAuthCookie: true,
betterAuthCookieValue: 'F9re4fIzdHuMBr99Mie3XVruiBiShEcf.dnBeFi7f+wzId83kiOxBlcsIX0K71O3aT9icxq3clgA=',
url: '/profile',
allCookiesCount: 3,
allCookies: [
{ name: 'NEXT_LOCALE', hasValue: true },
{ name: 'catalog-view-preference', hasValue: true },
{ name: '__Secure-auth.session_token', hasValue: true }
],
sessionCookie: null,
session: null,
isLoggedIn: true
}
got this too.. only on production tho.