Basic Auth Password
1.Проверка среды выполнения:
if (process.env.NODE_ENV !== 'production')
проверяет, что код выполняется не в Production среде. Если это так, то middleware
просто пропускает запрос дальше с помощью NextResponse.next()
.
2.Production среда:
Если среда выполнения — Production, то выполняется логика с базовой авторизацией.
Таким образом, в Development среде middleware
будет просто пропускать запросы, а в Production — требовать авторизацию.
import { NextRequest, NextResponse } from 'next/server'
export const config = { matcher: ['/:path*', '/index/:path*'],}
export function middleware(req: NextRequest) { // Проверяем, что мы в Production if (process.env.NODE_ENV !== 'production') { return NextResponse.next() }
const basicAuth = req.headers.get('Authorization')
if (basicAuth) { const authValue = basicAuth.split(' ')[1] // atob устарел, но Buffer.from недоступен в Next.js edge. const [user, password] = atob(authValue).split(':')
if (user === 'login' && password === 'password') { // Укажите свой логин и пароль для входа return NextResponse.next() }
return NextResponse.json( { error: 'Неверные учетные данные' }, { headers: { 'WWW-Authenticate': 'Basic realm="Secure Area"' }, status: 401, } ) } else { return NextResponse.json( { error: 'Пожалуйста, введите учетные данные' }, { headers: { 'WWW-Authenticate': 'Basic realm="Secure Area"' }, status: 401, } ) }}