Middleware functions run before route handlers on every request. They can modify the request, add context, or return early responses.
Create files in server/middleware/. They run in alphabetical order:
import { defineMiddleware } from "nitro";
export default defineMiddleware((event) => {
event.context.auth = { name: "User " + Math.round(Math.random() * 100) };
});Middleware can:
- Add data to
event.contextfor use in handlers - Return a response early to short-circuit the request
- Modify request headers or other properties
Data added to event.context in middleware is available in all subsequent handlers:
import { defineHandler } from "nitro";
export default defineHandler((event) => ({
auth: event.context.auth,
}));