Route protection and authorization patterns for Clerk middleware. Use when implementing route guards, protecting API routes, configuring middleware matchers, setting up role-based access control, creating auth boundaries, or when user mentions middleware, route protection, auth guards, protected routes, public routes, matcher patterns, or authorization middleware.
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
examples/api-middleware.tsexamples/basic-middleware.tsexamples/conditional-routing.tsexamples/organization-routes.tsexamples/public-private-routes.tsexamples/role-based-protection.tsexamples/validate_routes.pyscripts/configure-routes.shscripts/generate-middleware.shscripts/test-protection.shscripts/validate-middleware.shtemplates/middleware.tstemplates/organization-middleware.tstemplates/role-based-middleware.tstemplates/route-matchers.tsComprehensive route protection and authorization patterns for Clerk middleware in Next.js applications. Provides middleware configuration, route matchers, role-based access control, and authentication boundaries.
auth() helperCreate middleware.ts in project root
clerkMiddleware from @clerk/nextjs/serverConfigure Public Routes
Set Protected Routes
Role-Based Access Control
Conditional Route Protection
API Route Protection
Multi-Tenant Protection
Test Authentication Boundaries
Test Edge Cases
Use these templates for middleware implementation:
templates/middleware.ts - Basic middleware configurationtemplates/route-matchers.ts - Route matching patternstemplates/role-based-middleware.ts - Role-based access controltemplates/public-routes-config.ts - Public route definitionstemplates/protected-routes-config.ts - Protected route setuptemplates/api-middleware-config.ts - API route protectiontemplates/organization-middleware.ts - Organization-scoped protectiontemplates/conditional-middleware.ts - Conditional route logictemplates/custom-redirects.ts - Custom redirect handlingUse these scripts for middleware setup and testing:
scripts/generate-middleware.sh - Generate middleware.ts with configurationscripts/configure-routes.sh - Setup route protection patternsscripts/test-protection.sh - Test authentication guards and boundariesscripts/validate-middleware.sh - Validate middleware configurationSee complete examples in the examples/ directory:
examples/basic-middleware.ts - Simple middleware setupexamples/public-private-routes.ts - Public vs protected routesexamples/api-middleware.ts - API route protectionexamples/role-based-protection.ts - Role-based access controlexamples/organization-routes.ts - Organization-scoped routesexamples/conditional-routing.ts - Conditional protection logicexamples/custom-auth-flow.ts - Custom authentication flowsexamples/middleware-tests.ts - Middleware unit testsexamples/integration-tests.ts - Full protection integration testsCRITICAL: When generating middleware configuration:
your_clerk_secret_key_hereprocess.env.CLERK_SECRET_KEY.env* to .gitignore (except .env.example)Next.js Version:
Clerk SDK:
Configuration Files:
.env.local with Clerk environment variablesmiddleware.ts in project root.gitignore protecting secrets// Public: /, /about, /pricing
// Protected: /dashboard/*, /profile/*
// Matcher: Protect everything except public routes
// Protect all /api/* except /api/webhooks/clerk
// Validate session tokens on protected endpoints
// Return 401 for unauthenticated requests
// Require organization membership for /org/*
// Check active organization in middleware
// Redirect to organization selection if needed
// Check user roles in middleware
// Redirect based on permissions (admin vs user)
// Implement feature-specific access control
Middleware Not Running
Infinite Redirect Loops
Protected Routes Accessible
Session Not Found
Purpose: Provide comprehensive middleware protection patterns for Clerk authentication Load when: Implementing route guards, protecting routes, setting up middleware, configuring auth boundaries