Luồng chuyển hướng thông minh sau đăng nhập
Xử lý redirect logic phức tạp một cách elegant với sự hỗ trợ của AI.
Các tình huống cần xử lý:
-
User chưa đăng nhập truy cập trang protected:
- Redirect đến /login
- Lưu lại URL gốc (returnUrl)
- Sau khi login thành công → quay về URL gốc
-
User mới đăng ký lần đầu:
- Redirect đến /onboarding để hoàn thiện profile
- Kiểm tra profile completeness
-
User đã đăng nhập truy cập /login:
- Redirect về /dashboard hoặc homepage
Prompt cho Gemini: "Viết Next.js middleware và auth utilities để:
- Protect routes /dashboard/, /settings/ - redirect to /login nếu chưa auth
- Sau login: check nếu profile chưa complete thì redirect /onboarding, ngược lại redirect về returnUrl hoặc /
- Nếu đã login mà vào /login thì redirect /"
Implementation pattern:
// middleware.ts
export async function middleware(request: NextRequest) {
const session = await getSession();
const pathname = request.nextUrl.pathname;
// Protected routes
if (pathname.startsWith('/dashboard') && !session) {
return NextResponse.redirect(
new URL(`/login?returnUrl=${pathname}`, request.url)
);
}
// Logged in user accessing login page
if (pathname === '/login' && session) {
return NextResponse.redirect(new URL('/', request.url));
}
}
Tips Vibe Coding: Luôn yêu cầu AI xử lý cả edge cases (session expired, network error) để UX mượt mà.
