Khi sử dụng trang web này, bạn đồng ý với Chính sách bảo mật và Điều khoản sử dụng.
Chấp nhận
Mẹo Vặt Công NghệMẹo Vặt Công NghệMẹo Vặt Công Nghệ
  • Trang Chủ
  • Xu Hướng
  • Công Nghệ
  • Lập Trình
    • Lập Trình NodeJS
    • Lập Trình PHP
    • Framework
      • NextJS
  • Liên Hệ
Đọc: Hướng Dẫn Thiết Lập Next Auth V5 Cho NextJS 14
Chia sẻ
Đăng nhập
Thông báo
Thay đổi kích thước phông chữÀ à
Mẹo Vặt Công NghệMẹo Vặt Công Nghệ
Thay đổi kích thước phông chữÀ à
Tìm Kiếm
  • Trang Chủ
  • Bài Viết
  • Tùy Chỉnh Sở Thích
  • Công Nghệ
  • Phần Mềm, Ứng Dụng
  • Liên Hệ
Bạn đã có tài khoản chưa? Đăng nhập
Theo dõi chúng tôi
  • Advertise
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Mẹo Vặt Công Nghệ > Bài Viết > Framework > NextJS > Hướng Dẫn Thiết Lập Next Auth V5 Cho NextJS 14
NextJSFrameworkLập TrìnhLập Trình NodeJS

Hướng Dẫn Thiết Lập Next Auth V5 Cho NextJS 14

Thiện Nhân Tào
Cập nhật lần cuối: Tháng 8 24, 2024 1:25 chiều
Tào Thiện Nhân - Web Developer 247 Lượt xem
Chia sẻ
12 Đọc tối thiểu
Chia sẻ

Chào mừng bạn đến với bài viết hướng dẫn cách thiết lập Next-Auth cho NextJS 14, hôm nay mình sẽ hướng dẫn cho các bạn sử dụng Next Auth V5 đây là một phiên bản mới nhất của Next-Auth đang trong giai đoạn beta cung cấp các chức năng xác thực tối ưu ngoài ra bạn có thể quản lý phiên đăng nhập của người dùng theo thời gian thực.

Contents
1. Cài đặt NextJS 14 và Next Auth V52. Cấu hình Next Auth V53. Cấu hình Database (Prisma + PostgreSQL)4. Đăng ký Google API5. Đăng nhập bằng Google

1. Cài đặt NextJS 14 và Next Auth V5

Bước đầu tiên bạn cần cài đặt NextJS trước đã, hiện tại NextJS đã phát triển đến phiên bản 14, bạn có thể dùng lệnh sau để cài đặt:

npx create-next-app@latest

Sau khi cài đặt xong NextJS 14, bạn cần mở dự án vừa cài đặt và chạy lệnh cài đặt Next Auth như sau:

npm install next-auth@beta

Khi bạn cài đặt xong NextJS và Next Auth V5 thì cấu trúc thư mục và cấu trúc package.json của bạn sẽ giống như hình phía trên.

Sau khi cài đặt xong các thư viện cần thiết chúng ta bắt đầu đến việc cấu hình dự án, đây là phần rất quan trọng nó sẽ quyết định xem dự án của bạn có hoạt động hay không, nếu như bạn thiếu một trong các bước sau có thể dự án của bạn sẽ không thể hoạt động như mong đợi.

2. Cấu hình Next Auth V5

Đầu tiền bạn cần tạo một mã khóa bảo mật cho ứng dụng Next-Auth của bạn tại đây Next-Auth có cung cấp 1 lệnh để làm việc này:

npx auth secret

Khi bạn nhập lệnh này nó sẽ yêu cầu bạn cài đặt tiện ích của nó là [email protected] bạn cứ ấn y + enter cho nó cài đặt, sau khi cài đặt xong nó sẽ tạo cho bạn 1 file .env.local trong file này sẽ có AUTH_SECRET.

Thiết lập AUTH_SECRET cho Next-Auth

Tiếp theo, tạo tệp cấu hình Auth.js và đối tượng. Đây là nơi bạn có thể kiểm soát hành vi của thư viện và chỉ định logic xác thực tùy chỉnh, bộ điều hợp, v.v. Chúng tôi khuyên tất cả các khung tạo một tệp trong dự án. Trong tệp này, chúng tôi sẽ truyền tất cả các tùy chọn vào hàm khởi tạo cụ thể của khung và sau đó xuất trình xử lý tuyến đường, phương thức đăng nhập và đăng xuất, v.v.

Bắt đầu bằng cách tạo một auth.ts tệp mới ở thư mục gốc của ứng dụng với nội dung sau.

import NextAuth from "next-auth"

export const { handlers, signIn, signOut, auth } = NextAuth({
providers: [],
})

Thêm Trình xử lý tuyến đường bên dưới /app/api/auth/[...nextauth]/route.ts.

import { handlers } from "@/auth"
export const { GET, POST } = handlers

Thêm phần mềm trung gian tùy chọn để duy trì phiên hoạt động, phần mềm này sẽ cập nhật thời điểm hết hạn của phiên mỗi khi phiên được gọi.

export { auth as middleware } from "@/auth"

Như vậy là xong phần cấu hình cơ bản rồi đó các bạn, tiếp theo chúng ta sẽ tiến hành sử dụng các providers của Next-Auth để xác thực, trong bài viết này mình sẽ hướng dẫn có các bạn custom lại trang đăng nhập của Next-Auth đồng thời sẽ xác thực bằng Google nha.

Trước khi bạn có thể vào được phần xác thực thì bạn cần có một database, mình khuyến khích các bạn sử dụng Prisma + PostgreSQL nha vì Next-Auth hỗ trợ hai thư viện này cực kì mạnh.

3. Cấu hình Database (Prisma + PostgreSQL)

Mình sử dụng Database của thằng Supabase nha các bạn, hiện tại nó đang cung cấp một database cho các bạn miễn phí, bạn có thể tạo nhiều dự án khác nhau, tuy nhiên nó vẫn có giới hạn số lượt call đến, băng thông và các giá trị kỹ thuật khác, chi tiết bạn có thể xem ở phần Plan nhé.

Khi bạn đăng ký và tạo database xong bạn ấn vào nút Connect xong chuyển qua tab ORMs ở đây nó cung cấp cho các bạn DATABASE_URL và DIRECT_URL bạn copy vào thư mục env.local nhé, bạn nhở thay đổi phần [YOUR_PASSWORD] thành mật khẩu bạn đặt khi tạo database nha.

Sau khi bạn đã có database rồi chúng ta sẽ tiến hành cài đặt Prisma và Prisma Client:

npm install @prisma/client @auth/prisma-adapter @neondatabase/serverless @prisma/adapter-neon
npm install prisma --save-dev

Bạn cài lần lượt hai câu lệnh trên để cài đặt các thư viện cần thiết, kế tiếp bạn tạo /src/lib/prisma.ts để kết nối đến database:

import { PrismaClient } from '@prisma/client'

import { Pool } from '@neondatabase/serverless'
import { PrismaNeon } from '@prisma/adapter-neon'

const prismaClientSingleton = () => {
const neon = new Pool({ connectionString: process.env.DATABASE_URL })
const adapter = new PrismaNeon(neon)
return new PrismaClient({ adapter })
}

declare const globalThis: {
prismaGlobal: ReturnType<typeof prismaClientSingleton>
} & typeof global

const prisma = globalThis.prismaGlobal ?? prismaClientSingleton()

export default prisma

if (process.env.NODE_ENV !== 'production') globalThis.prismaGlobal = prisma

Sau đó bạn vào lại /src/auth.ts để thêm Prisma Adapter vào nhé:

Next Auth V5

Sau đó ở root bạn tạo prisma/schema.prisma dùng để kết nối với database cũng như thêm bảng, các trường dữ liệu và các mối liên hệ trong database nha:

generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
}

datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}

model User {
id String @id @default(cuid())
name String?
email String @unique
emailVerified DateTime?
image String?
accounts Account[]
sessions Session[]

Authenticator Authenticator[]

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Account {
userId String
type String
provider String
providerAccountId String
refresh_token String?
access_token String?
expires_at Int?
token_type String?
scope String?
id_token String?
session_state String?

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt

user User @relation(fields: [userId], references: [id], onDelete: Cascade)

@@id([provider, providerAccountId])
}

model Session {
sessionToken String @unique
userId String
expires DateTime
user User @relation(fields: [userId], references: [id], onDelete: Cascade)

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model VerificationToken {
identifier String
token String
expires DateTime

@@id([identifier, token])
}

model Authenticator {
credentialID String @unique
userId String
providerAccountId String
credentialPublicKey String
counter Int
credentialDeviceType String
credentialBackedUp Boolean
transports String?

user User @relation(fields: [userId], references: [id], onDelete: Cascade)

@@id([userId, credentialID])
}

Sau khi bạn tao xong thì bạn cần chạy 2 lệnh sau, đầu tiên là lệnh dùng để khởi tạo database ở client:

npx prisma generate

kế tiếp là lệnh push database lên trên máy chủ của bạn:

npx prisma db push

LƯU Ý: tại đây bạn cần đổi .env.local thành .env nhé vì prisma không đọc được biến môi trường ở .env.local

Nếu như thông báo thành công thì xem như bạn đã hoàn thành các bước đầu tiên cho việc thiết lập Next-Auth cho NextJS rồi đó.

4. Đăng ký Google API

Các hãy truy cập vao Cloud Google để tạo cho mình một dự án nha, tại bài viết này mình không hướng dẫn chi tiết về việc tạo dự án trên Cloud Google.

Các bạn lưu ý các thông tin sau ở hình ảnh phía dưới, mình đã có gạch đỏ các thông tin cần lưu ý, nếu bạn đang làm việc tại môi trường phát triển thì hãy ghi giống hình phía dưới nha:

Các thông tin cần chú ý:

  1. Phần “Name” đây là tên dự án của bạn, bạn có thể tùy chỉnh.
  2. Phần “Authorized JavaScript origins” bạn có thể nhập tên miền của bạn nếu như bạn đang trong môi trường phát triển thị mặc định sẽ là “http://localhost:3000”.
  3. Phần “Authorized redirect URIs” nó sẽ callback về khi bạn thực hiện đăng nhập nó sẽ theo cấu trúc sau: “tên miền + /api/auth/callback/google” mặc định trên môi trường phát triển là: “http://localhost:3000/api/auth/callback/google”.
  4. Phần “Client ID” bạn copy và bỏ vào file .env nha.
  5. Phần “Client Secret” bạn copy và bỏ vào file .env nha.

Bạn hãy đặt biến môi trường là AUTH_GOOGLE_ID và AUTH_GOOGLE_SECRET nha, vì khi đặt như thế bạn khớp với mặc định của Next Auth, điều này nó sẽ giảm bớt phần khai báo biến môi trường trong Providers khi bạn thiết lập đăng nhập với Google.

AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=

5. Đăng nhập bằng Google

Đầu tiên bạn cần tạo một giao diện đăng nhập, gồm nút đăng nhập bằng Google nha, phía dưới là giao diện cơ bản của mình:

Kế tiếp tục ra tách nút đăng nhập ra một components khác vì hiện tại trang này mình đã khai báo “async function” mà nút đăng nhập cần sử dụng thuộc tính “onClick” thuộc tính này chỉ có thể sử dụng ở Client Component mà thôi mình tách ra như sau:

Kế tiếp bạn vào cho mình phần /src/auth.ts để khai báo cho nó Google Providers, các bạn chú ý đường dẫn import vào nhé:

Như vậy là đã hoàn thành xong các bước để đăng nhập Google bằng Next Auth V5 rồi, các bạn chỉ cần chạy:

npm run dev

Kế tiếp vào ấn vào nút “Đăng nhập bằng Google” thì sẽ thành công nha, đây là kết quả:

Next Auth V5 sẽ tự động import vào database của các bạn và nó quản lý dựa trên JWT hoặc Session tùy theo bạn lựa chọn với bài hướng dẫn của mình thì mình đã cấu hình chuẩn để có thể quản lý bằng hai phương thức trên còn nếu bạn làm theo tài liệu của Next Auth V5 thì chỉ có thể quản lý bằng JWT thôi nha, nếu có thắc mắt thì đừng ngần lại liên hệ với mình qua các trang mạng xã hội nha, lời cuối cùng mình xin cảm ơn các bạn đã xem bài hướng dẫn của mình.

Video hướng dẫn: Mẹo Vặt Công Nghệ – Youtube
Bài viết khác: Mẹo Vặt Công Nghệ – Webiste

Bạn cũng có thể thích

Cách Thiết Lập Website Đa Ngôn Ngữ (Next Intl) – Phần 1

DMCA là gì ? Làm thế nào để bảo vệ nội dung của bạn

Cách Cài Đặt Microsoft Office 2024 Crack Từ A Đến Z

Cách tối ưu Windows 11 cho máy tính cấu hình thấp

ĐÃ GẮN THẺ:DevelopmentLập TrìnhNextAuth V5NextJSNodeJSXu hướng

Đăng Ký Nhận Bản Tin Hàng Ngày

Hãy theo dõi! Nhận tin tức mới nhất được gửi thẳng đến hộp thư của bạn.
Bằng cách đăng ký, bạn đồng ý với Điều khoản sử dụng của chúng tôi và thừa nhận các hoạt động dữ liệu trong Chính sách bảo mật của chúng tôi. Bạn có thể hủy đăng ký bất kỳ lúc nào.
Chia sẻ bài viết này
Facebook Twitter Sao chép liên kết In
Chia sẻ
Bạn nghĩ sao?
Yêu1
Buồn0
Vui mừng0
Buồn ngủ0
Tức giận0
Nháy mắt0
Thiện Nhân Tào
Qua Tào Thiện Nhân Web Developer
Theo:
I'm a Web Developer with nearly 2 years of experience in the field. I am currently studying Information Technology at FPT University. Throughout my career, I have gained proficiency in various frameworks such as Laravel, Next.js, and WordPress, which have enabled me to build robust and efficient web applications.
Bài viết trước Cách Cài Đặt Microsoft Office 2024 Crack Từ A Đến Z
Bài viết tiếp theo Microsoft Sẽ Sớm Xóa Bỏ Control Panel Trên Windows 11
Để lại bình luận Để lại bình luận

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Mạng Xã Hội

FacebookThích
TwitterTheo dõi
YoutubeĐặt mua
TiktokTheo dõi

Ủng Hộ Tôi

- Advertisement -
Ad imageAd image
- Advertisement -
Ad imageAd image

Tin Mới Nhất

Adobe Photoshop 2024
Cài Đặt Adobe Photoshop 2024 Miễn Phí
Phần Mềm, Ứng Dụng Tháng 9 20, 2024
Cách Thiết Lập Website Đa Ngôn Ngữ (Next Intl) – Phần 1
Lập Trình Công Nghệ Lập Trình NodeJS NextJS Tháng 9 8, 2024
TOP 10 AI Viết Nội Dung Và SEO Web
Chưa phân loại Tháng 9 4, 2024
DMCA là gì ? Làm thế nào để bảo vệ nội dung của bạn
Thông Tin Tháng 9 1, 2024
//

Mẹo Vặt Công Nghệ là một trang web cung cấp các mẹo hay về công nghệ, phần mềm, máy tính ngoài ra có các bài viết về hướng dẫn lập trình và các thể loại bài viết khác trong lĩnh vực công nghệ.

Điều Khoản & Chính Sách

  • Chính sách bảo mật

Danh Mục Hàng Đầu

  • Công Nghệ
  • Lập Trình
  • Phần Mềm, Ứng Dụnghot
  • Trí Tuệ Nhân Tạo

Đăng Ký Nhận Nản Tin Của Chúng Tôi

Đăng ký nhận bản tin của chúng tôi để nhận ngay những bài viết mới nhất!

DMCA.com Protection Status DMCA compliant image
Mẹo Vặt Công NghệMẹo Vặt Công Nghệ
Theo dõi chúng tôi
© 2024 Bản quyền thuộc về Mẹo Vặt Công Nghệ. Được phát triển bởi Tào Thiện Nhân
Tham Gia Với Chúng Tôi!

Đăng ký nhận bản tin của chúng tôi và không bao giờ bỏ lỡ tin tức, podcast mới nhất, v.v.

Không có thư rác, có thể hủy đăng ký bất cứ lúc nào.
adbanner
Đã phát hiện AdBlock
Trang web của chúng tôi là trang web được hỗ trợ quảng cáo. Vui lòng thêm vào danh sách trắng để hỗ trợ trang web của chúng tôi.
Được rồi, tôi sẽ đưa vào danh sách trắng
Chào Mừng Trở Lại!

Đăng nhập vào tài khoản của bạn

Đăng ký Quên mật khẩu?