ทำ Authentication ด้วย NextAuth.js v4
NextAuth.js v4 กับ Credentials Provider เหมาะสำหรับระบบที่ต้องการ login ด้วย username และ password โดยไม่ต้องพึ่ง OAuth provider ภายนอก เหมาะมากสำหรับระบบ admin ที่มี user เดียว
ขั้นตอนแรกคือติดตั้ง next-auth แล้วสร้างไฟล์ app/api/auth/[...nextauth]/route.ts ซึ่งเป็น catch-all route ที่ NextAuth ใช้จัดการทุก request ที่เกี่ยวกับ authentication
การตั้งค่า JWT session strategy ทำให้ไม่ต้องเก็บ session ใน database แต่เข้ารหัสข้อมูลไว้ใน cookie แทน ทำให้ scale ได้ง่ายกว่า แต่ต้องระวังว่า JWT จะ invalidate ได้ยากกว่า database session
การป้องกัน route ด้วย middleware เป็นวิธีที่สะอาดที่สุด โดยสร้างไฟล์ middleware.ts ที่ root ของ project แล้วใช้ withAuth จาก next-auth/middleware ซึ่งจะ redirect ไปหน้า login อัตโนมัติถ้ายังไม่ได้ login
สิ่งสำคัญที่สุดคือ NEXTAUTH_SECRET ต้องเป็น random string ที่ยาวและคาดเดาไม่ได้ สามารถ generate ได้ด้วยคำสั่ง openssl rand -base64 32 และต้องไม่ commit ลง git repository เด็ดขาด