Mengintegrasikan NextAuth.js
Sediakan dan konfigurasikan NextAuth.js untuk pengesahan yang mudah serta selamat dalam aplikasi Next.js anda.
Mengintegrasikan NextAuth.js ialah pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) percuma di CoddyKit. Ini ialah pelajaran 1 daripada 6. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan), dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) merangkumi sejumlah 6 pelajaran.
Pengesahan dengan Next.js 15
Selamat datang ke Pengintegrasian NextAuth.js! Dalam aplikasi web moden, pengesahan pengguna amat penting. Pengesahan membolehkan pengguna mendaftar masuk, membuktikan identiti mereka dan mendapatkan akses kepada kandungan yang diperibadikan.
Melaksanakan pengesahan dari awal boleh menjadi rumit dan mudah menyebabkan ralat kerana melibatkan pencincangan kata laluan yang selamat, pengurusan sesi dan perlindungan daripada pelbagai serangan.
Memperkenalkan NextAuth.js
NextAuth.js (kini sering dirujuk sebagai Auth.js) ialah penyelesaian pengesahan sumber terbuka yang lengkap untuk aplikasi Next.js. Ia memudahkan penambahan pengesahan pada projek anda dengan ketara.
- Persediaan Mudah: Jadikan pengesahan berfungsi dengan cepat menggunakan konfigurasi minimum.
- Pelbagai Penyedia: Menyokong pelbagai kaedah pengesahan seperti Google, GitHub, e-mel atau kelayakan tersuai.
- Selamat: Mengendalikan banyak amalan terbaik keselamatan untuk anda.
- Fleksibel: Berfungsi dengan lancar dengan kedua-dua Komponen Klien dan Komponen Pelayan.
Pemasangan
Mula-mula, mari pasang pakej next-auth dalam projek Next.js anda. Buka terminal anda di akar projek dan jalankan:
Anda juga perlu mengkonfigurasi pemboleh ubah persekitaran untuk keselamatan dan fungsi yang betul.
npm install next-authKonfigurasi NextAuth.js
Dalam Next.js 15 (Penghala Aplikasi), NextAuth.js menggunakan fail konfigurasi, biasanya auth.ts, untuk menentukan cara pengesahan berfungsi. Fail ini mengeksport objek konfigurasi yang merangkumi penyedia pengesahan anda.
Anda juga perlu menetapkan pemboleh ubah persekitaran, AUTH_SECRET, yang digunakan untuk menandatangani dan menyulitkan token sesi. Nilainya hendaklah berupa rentetan rawak yang panjang.
import NextAuth from "next-auth";
import CredentialsProvider from "next-auth/providers/credentials";
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [
CredentialsProvider({
name: "Credentials",
credentials: {
username: { label: "Username", type: "text", placeholder: "jsmith" },
password: { label: "Password", type: "password" }
},
async authorize(credentials, req) {
// Logic to verify user credentials
// Return user object if successful, null otherwise
return null;
}
})
],
pages: {
signIn: '/auth/signin',
}
});Penyedia Kelayakan
CredentialsProvider membolehkan pengguna mendaftar masuk menggunakan nama pengguna/e-mel dan kata laluan. Anda menentukan medan input (credentials) dan menyediakan fungsi authorize.
Fungsi authorize ialah tempat anda mengesahkan input pengguna terhadap pangkalan data anda. Untuk contoh ini, kami akan menggunakan semakan berkod keras yang mudah.
import NextAuth from "next-auth";
import CredentialsProvider from "next-auth/providers/credentials";
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [
CredentialsProvider({
name: "Credentials",
credentials: {
username: { label: "Username", type: "text", placeholder: "test" },
password: { label: "Password", type: "password" }
},
async authorize(credentials) {
if (credentials?.username === "user" && credentials?.password === "pass") {
return { id: "1", name: "Test User", email: "test@example.com" };
}
return null; // Authentication failed
}
})
],
pages: {
signIn: '/auth/signin',
}
});Komponen Halaman Daftar Masuk
Sekarang, mari cipta komponen klien yang menyediakan borang daftar masuk. Kami akan menggunakan fungsi signIn yang dieksport daripada fail auth.ts kami (atau next-auth/react jika lebih sesuai untuk komponen klien).
Komponen ini akan mengendalikan input pengguna dan mencetuskan aliran pengesahan menggunakan CredentialsProvider yang kami konfigurasi.
// app/auth/signin/page.tsx (Client Component)
'use client';
import { signIn } from "next-auth/react";
import { useState } from "react";
export default function SignInPage() {
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
const result = await signIn('credentials', {
username,
password,
redirect: false, // Don't redirect automatically
});
if (result?.error) {
alert(result.error);
} else {
window.location.href = '/'; // Redirect on success
}
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
placeholder="Username (user)"
value={username}
onChange={(e) => setUsername(e.target.value)}
/>
<input
type="password"
placeholder="Password (pass)"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
<button type="submit">Sign In</button>
</form>
);
}Memaparkan Data Sesi
Setelah pengguna mendaftar masuk, anda boleh mengakses maklumat sesi mereka. Dalam Komponen Pelayan, anda boleh menggunakan fungsi auth() daripada auth.ts secara terus untuk mendapatkan data sesi.
Ini amat berguna untuk memaparkan antara muka berdasarkan pengguna yang telah mendaftar masuk atau mendapatkan data khusus pengguna pada pelayan.
// app/page.tsx (Server Component)
import { auth, signOut } from "@/auth"; // Adjust path if needed
export default async function HomePage() {
const session = await auth();
return (
<div>
<h1>Welcome!</h1>
{session?.user ? (
<div>
<p>Signed in as {session.user.name || session.user.email}</p>
{/* SignOut button would be in a Client Component */}
</div>
) : (
<p>Not signed in. <a href="/auth/signin">Sign In</a></p>
)}
</div>
);
}Melaksanakan Daftar Keluar
Membenarkan pengguna mendaftar keluar sama pentingnya dengan membenarkan mereka mendaftar masuk. Anda boleh menggunakan fungsi signOut daripada next-auth/react dalam Komponen Klien.
Apabila dipanggil, signOut mengosongkan sesi pengguna dan biasanya mengubah hala mereka ke halaman yang ditentukan (seperti halaman utama atau halaman daftar masuk).
// app/components/SignOutButton.tsx (Client Component)
'use client';
import { signOut } from "next-auth/react";
export default function SignOutButton() {
return (
<button onClick={() => signOut({ callbackUrl: '/' })}>
Sign Out
</button>
);
}Pilihan NextAuth.js
NextAuth.js menawarkan banyak pilihan konfigurasi untuk menyesuaikan tingkah laku. Dalam auth.ts anda, anda boleh menentukan:
pages: URL tersuai untuk halaman daftar masuk, daftar keluar dan ralat.callbacks: Fungsi untuk mengawal perkara yang berlaku apabila pengguna mendaftar masuk, mengemas kini sesi mereka atau mencipta JWT.session: Mengkonfigurasi penyimpanan sesi (JWT atau pangkalan data).secret: Pemboleh ubah persekitaranAUTH_SECRET.
Pilihan ini memberikan kawalan yang berkuasa terhadap aliran pengesahan dan pengalaman pengguna.
Semakan Pantas
Fail manakah yang digunakan terutamanya untuk mengkonfigurasi penyedia dan fungsi panggil balik NextAuth.js dalam projek Penghala Aplikasi Next.js 15?
Imbas Kembali & Langkah Seterusnya
Anda telah berjaya mempelajari asas penyepaduan NextAuth.js ke dalam aplikasi Next.js 15 anda!
- Kami memasang NextAuth.js.
- Mengkonfigurasi
auth.tsdengan CredentialsProvider. - Mencipta komponen klien untuk daftar masuk dan daftar keluar.
- Mengakses data sesi dalam komponen pelayan.
Dalam pelajaran seterusnya, kami akan meneroka cara melindungi laluan dan data berdasarkan status pengesahan pengguna menggunakan middleware Next.js dan semakan pada bahagian pelayan.
Pelajari TypeScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 22
- Pelajaran
- 88
Soalan Lazim
Adakah pelajaran “Mengintegrasikan NextAuth.js” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan), termasuk “Mengintegrasikan NextAuth.js”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) merangkumi sejumlah 6 pelajaran.
Apakah yang akan saya pelajari dalam “Mengintegrasikan NextAuth.js”?
Sediakan dan konfigurasikan NextAuth.js untuk pengesahan yang mudah serta selamat dalam aplikasi Next.js anda. Anda berlatih Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan)?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 6.
Berapa lamakah pelajaran “Mengintegrasikan NextAuth.js” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) ini?
Ya. Setiap pelajaran Tindanan Penuh Next.js 15 (Penghala Aplikasi + Tindakan Pelayan) menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengintegrasikan NextAuth.js
- Pelaksanaan Strategi JWT
- Melindungi Laluan & Data
- Pengawal Keselamatan dan Peranan
- Strategi Pengesahan Tersuai
- Integrasi Passport.js