Performance: Authentication in middleware
This affects the initial page load speed and interaction responsiveness by adding server-side checks before rendering content.
Jump into concepts and practice - no test required
import { NextResponse } from 'next/server'; export function middleware(request) { const token = request.cookies.get('token'); if (!token) { return NextResponse.redirect(new URL('/login', request.url)); } return NextResponse.next(); }
export async function getServerSideProps(context) { const user = await getUserFromSession(context.req); if (!user) { return { redirect: { destination: '/login', permanent: false } }; } return { props: { user } }; }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Auth in getServerSideProps | N/A (server-side) | N/A | Blocks initial paint until auth completes | [X] Bad |
| Auth in middleware | N/A (server-side) | N/A | Minimal blocking, early redirect improves paint timing | [OK] Good |
import { NextResponse } from 'next/server';
export function middleware(request) {
const token = request.cookies.get('token');
if (!token) {
return NextResponse.redirect(new URL('/login', request.url));
}
return NextResponse.next();
}import { NextResponse } from 'next/server';
export function middleware(request) {
const token = request.cookies.token;
if (!token) {
return NextResponse.redirect('/login');
}
return NextResponse.next();
}export const config = {
matcher: ???
};