import { NextRequest, NextResponse } from "next/server";
import { createClient } from '@/utils/supabase/server';
export async function middleware(request: NextRequest) {
const { pathname } = request.nextUrl;
// 允许未认证用户访问 /login 页面
if (pathname === '/login') {
return NextResponse.next();
}
const supabase = createClient();
const { data } = await supabase.auth.getSession();
// 如果用户未认证,重定向到 /login 页面
if (!data?.session?.user) {
return NextResponse.redirect(new URL('/login', request.url));
}
// 如果用户访问根路径或 /home,重定向到 /dashboard
if (pathname === "/" || pathname.includes("/home")) {
return NextResponse.redirect(new URL('/dashboard', request.url));
}
// 对其他路径,继续请求处理
return NextResponse.next();
}
// Ensure the middleware is only called for relevant paths.
export const config = {
matcher: [
/*
* Match all request paths except for the ones starting with:
* - _next/static (static files)
* - _next/image (image optimization files)
* - favicon.ico (favicon file)
*/
'/((?!_next/static|_next/image|favicon.ico).*)',
],
};
nextjs+supabase判断是否登录核心代码
最新推荐文章于 2024-10-04 00:46:18 发布