กำลังย้าย RainbowKit SIWE ไปที่ NextAuth v5
แพ็คเกจ RainbowKit's @rainbow-me/rainbowkit-siwe-next-auth ตอนนี้รองรับ NextAuth v5 การอัปเกรดนี้เป็นการเปลี่ยนแปลงที่สำคัญสำหรับแอปที่ใช้ NextAuth SIWE adapter เนื่องจาก NextAuth ได้เปลี่ยนแปลง API การกำหนดค่าเซิร์ฟเวอร์, การช่วยเหลือเซสชัน และการทำงานภายใน CSRF
ปัจจุบัน NextAuth.js เป็นส่วนหนึ่งของโปรเจค Auth.js โดยยังคงใช้ชื่อแพ็คเกจ next-auth อยู่ และสามารถดูเอกสารทางการของ NextAuth.js ได้ที่ next-auth.js.org คู่มือนี้ใช้ชื่อแพ็คเกจ next-auth ที่คุณติดตั้งในวันนี้ พร้อมระบุการเปลี่ยนผ่านไปที่ Auth.js ในกรณีที่มีผลต่อชื่อคุกกี้และ APIs ของ v5
ปฏิบัติตามขั้นตอนด้านล่างหากแอปของคุณใช้งาน @rainbow-me/rainbowkit-siwe-next-auth กับ NextAuth v4 ในปัจจุบัน
1. อัปเกรด dependencies
ติดตั้งเวอร์ชันแพ็กเกจ NextAuth v5 ที่รองรับโดย RainbowKit.
2. อัปเดตกำหนดค่าของเซิร์ฟเวอร์ NextAuth
NextAuth v5 ที่เอกสารเป็นส่วนหนึ่งของโครงการ Auth.js ใช้ประเภท NextAuthConfig โปรไวเดอร์ Credentials ส่งออกและผู้ช่วยที่ส่งคืนจาก NextAuth(authOptions).
Auth.js แนะนำให้ใช้ตัวแปรสภาพแวดล้อม AUTH_URL และ AUTH_SECRET. หากคุณมีการปรับใช้ NextAuth v4 โดยใช้ NEXTAUTH_URL และ NEXTAUTH_SECRET อยู่แล้วให้เก็บไว้เป็นตัวสำรองในขณะที่คุณเปลี่ยนผ่าน.
สำหรับตัวจัดการเส้นทางของ App Router ให้ส่งออกผู้จัดการ GET และ POST ที่ส่งคืน.
สำหรับเส้นทาง API ของ Pages Router ให้ส่งผ่าน authOptions v5 ของคุณไปยัง NextAuth.
3. อัปเดตการอ่านเซสชันที่ฝั่งเซิร์ฟเวอร์
หากคุณอ่านที่อยู่ผู้รับรองที่ได้รับอนุมัติใน getServerSideProps ให้เปลี่ยนจากผู้ช่วยเซสชัน v4 เป็นผู้ช่วย auth v5 ที่ส่งออกโดยการกำหนดค่าการรับรองของคุณ.
ส่ง req และ res แยกกัน. การส่งออบเจ็กต์ GetServerSidePropsContext แบบเต็มไปยัง auth ไม่ได้รับการสนับสนุนโดย v5 overloads.
4. อัปเดตการตรวจสอบการเปลี่ยนแปลงของ SIWE
ใน v4 การเปรียบเทียบการเปลี่ยนแปลงของ SIWE ถูกเปรียบเทียบกับ getCsrfToken ภายใน authorize ในตัวอย่างของ RainbowKit.
ใน NextAuth v5 ผู้ให้บริการ Credentials ได้รับโทเค็น CSRF ที่ตรวจสอบแล้วเป็น credentials.csrfToken หลังจาก NextAuth ตรวจสอบความถูกต้องของคุกกี้ CSRF ของคำขอ.
คุกกี้ภายใน NextAuth v5 ใช้ส่วนหน้า authjs ของ Auth.js รวมถึง authjs.csrf-token หรือ __Host-authjs.csrf-token ตามการตั้งค่าคุกกี้ปลอดภัย. คุณไม่จำเป็นต้องแยกวิเคราะห์คุกกี้เหล่านั้นเองสำหรับกระบวนการ SIWE ของ RainbowKit.
5. ส่งคืนที่อยู่ผู้รับรองที่ได้รับอนุมัติในเซสชัน
หากแอปของคุณอ่าน session.address ให้คงการจับคู่ subject JWT ไว้ที่เซสชันในระบบย้อนกลับของ NextAuth ของคุณ.
คุณสามารถดูการตั้งค่า NextAuth v5 แบบเต็มในตัวอย่าง with-next-siwe-next-auth.
หากคุณกำลังอัปเกรดจากการรวม RainbowKit SIWE ที่เก่ากว่า ตรวจสอบบันทึกการเปลี่ยนแปลง 0.5.0 สำหรับการเปลี่ยนแปลง viem/siwe และบันทึกการเปลี่ยนแปลง 0.3.0 สำหรับการเปลี่ยนแปลงรูปร่างคำขอ getCsrfToken ก่อนหน้า.