Memigrasikan RainbowKit SIWE ke NextAuth v5
Paket @rainbow-me/rainbowkit-siwe-next-auth dari RainbowKit kini mendukung NextAuth v5. Ini adalah peningkatan besar untuk aplikasi yang menggunakan adapter NextAuth SIWE karena NextAuth mengubah API konfigurasi servernya, API pembantu sesi, dan alur internal CSRF.
NextAuth.js sekarang menjadi bagian dari proyek Auth.js yang lebih luas. Nama paket tetap next-auth, dan dokumentasi resmi NextAuth.js masih tersedia di next-auth.js.org. Panduan ini menggunakan nama paket next-auth yang Anda instal hari ini sambil menyebutkan transisi Auth.js dimana itu mempengaruhi nama cookie dan API v5.
Ikuti langkah-langkah di bawah ini jika aplikasi Anda saat ini menggunakan @rainbow-me/rainbowkit-siwe-next-auth dengan NextAuth v4.
1. Tingkatkan ketergantungan
Instal versi paket NextAuth v5 yang didukung oleh RainbowKit.
2. Perbarui konfigurasi server NextAuth Anda
NextAuth v5, didokumentasikan sebagai bagian dari proyek Auth.js, menggunakan tipe NextAuthConfig, ekspor penyedia Credentials, dan pembantu yang dikembalikan dari NextAuth(authOptions).
Auth.js menyarankan variabel lingkungan AUTH_URL dan AUTH_SECRET. Jika Anda sudah memiliki penyebaran NextAuth v4 menggunakan NEXTAUTH_URL dan NEXTAUTH_SECRET, simpan sebagai cadangan saat Anda bermigrasi.
Untuk pengendali rute App Router, ekspor pengendali GET dan POST yang dikembalikan.
Untuk rute API Pages Router, masukkan authOptions v5 Anda ke dalam NextAuth.
3. Perbarui pembacaan sesi di sisi server
Jika Anda membaca alamat terotentikasi di getServerSideProps, alihkan dari pembantu sesi v4 ke pembantu auth v5 yang diekspor oleh konfigurasi autentikasi Anda.
Lulus req dan res secara terpisah. Mengoper seluruh objek GetServerSidePropsContext ke auth tidak didukung oleh kelebihan v5.
4. Perbarui validasi nonce SIWE
Dalam implementasi v4, contoh-contoh RainbowKit membandingkan nonce SIWE terhadap getCsrfToken di dalam authorize.
Dalam NextAuth v5, penyedia Credentials menerima token CSRF yang telah diverifikasi sebagai credentials.csrfToken setelah NextAuth memvalidasi cookie CSRF permintaan.
Cookie internal NextAuth v5 menggunakan prefiks authjs dari Auth.js, termasuk authjs.csrf-token atau __Host-authjs.csrf-token bergantung pada pengaturan secure-cookie. Anda tidak perlu mengurai cookie tersebut sendiri untuk alur SIWE RainbowKit.
5. Kembalikan alamat yang terotentikasi pada sesi
Jika aplikasi Anda membaca session.address, tetap memetakan subjek JWT ke sesi di panggilan balik NextAuth Anda.
Anda dapat melihat pengaturan lengkap NextAuth v5 di contoh with-next-siwe-next-auth.
Jika Anda juga meningkatkan dari integrasi SIWE RainbowKit yang lebih lama, tinjau catatan perubahan 0.5.0 untuk migrasi viem/siwe dan catatan perubahan 0.3.0 untuk perubahan bentuk permintaan getCsrfToken sebelumnya.