Đặt lại mật khẩu NodeJS
Trong bài viết này, bạn sẽ tìm hiểu cách thực hiện quên/đặt lại mật khẩu bằng Node. js, Prisma, PostgreSQL, Nodemailer, Redis, Docker-compose và Pug Show
API CRUD với nút. js và Dòng PostgreSQL
Mục lục Quên/Đặt lại mật khẩu bằng nút. js, Prisma và PostgreSQLPHƯƠNG PHÁP HTTPROUTEDESCRIPTIONPOST/api/auth/quên mật khẩuĐể yêu cầu đặt lại mã thông báoPATCH/api/auth/resetpassword/. resetTokenĐể đặt lại mật khẩuĐể đặt lại mật khẩu, người dùng sẽ thực hiện yêu cầu POST với địa chỉ email của mình tới Nút. máy chủ js Sau đó, máy chủ xác thực email, tạo mã thông báo đặt lại và gửi mã thông báo đặt lại mật khẩu đến email của người dùng Ngoài ra, máy chủ trả về thông báo thành công cho ứng dụng giao diện người dùng cho biết rằng email đã được gửi Sau đó, người dùng nhấp vào nút “Đặt lại mật khẩu” khi nhận được email mã thông báo đặt lại Sau đó, người dùng được đưa đến trang đặt lại mật khẩu nơi anh ta được yêu cầu nhập mật khẩu mới trước khi thực hiện yêu cầu PATCH đến máy chủ Sau đó, máy chủ xác thực mã thông báo đặt lại và cập nhật mật khẩu của người dùng trong cơ sở dữ liệu trước khi gửi lại thông báo thành công cho ứng dụng giao diện người dùng Ứng dụng giao diện người dùng nhận được thông báo thành công và chuyển hướng người dùng đến trang đăng nhập Cập nhật mô hình người dùng PrismaCơ chế quên/đặt lại mật khẩu yêu cầu bảng 1 có một số cột cụ thể. Để làm như vậy, hãy chỉnh sửa và thêm các trường sau vào lược đồ Prisma của người dùng
Cuối cùng, tôi đã thêm một ràng buộc duy nhất và một chỉ mục trên cột 3 vì chúng ta sẽ truy vấn cơ sở dữ liệu bằng nólăng kính/lược đồ. lăng trụ
Tạo di chuyển và cập nhật cơ sở dữ liệu PostgreSQLKhi bạn đã cập nhật lược đồ người dùng, bạn cần tạo một di chuyển Prisma mới để phản ánh các thay đổi trước khi đẩy nó vào cơ sở dữ liệu PostgreSQL
bưu kiện. json
Hãy nhớ thay đổi tên di chuyển 6 để giúp bạn phân biệt giữa các lần di chuyển khác nhau trong tương laiChạy lệnh sau để tạo và đẩy quá trình di chuyển Prisma sang cơ sở dữ liệu PostgreSQL ________số 8_______Cập nhật lược đồ người dùngTrong mọi ứng dụng phụ trợ, bạn luôn nên xác thực nội dung yêu cầu trong phần mềm trung gian trước khi chuyển nó tới bộ điều khiển hoặc trình xử lý Bạn cần xác thực nội dung yêu cầu và gửi thông báo lỗi thích hợp khi bất kỳ quy tắc lược đồ nào bị vi phạm Có nhiều thư viện xác thực như Joi, Zod, Yup, v.v. nhưng tôi quyết định sử dụng Zod vì đây là thư viện xác thực lược đồ Typescript đầu tiên với suy luận kiểu tĩnh và tôi cảm thấy thoải mái khi sử dụng nó trong React và Node của mình. dự án js Thêm các lược đồ sau vào tệp 7src/lược đồ/người dùng. lược đồ. ts
Tệp 7 bây giờ trông như thế nàysrc/lược đồ/người dùng. lược đồ. ts
Các dịch vụ truy vấn và thay đổi cơ sở dữ liệu PostgreSQLỞ đây tôi đã xác định một số dịch vụ sẽ được bộ điều khiển gọi để truy vấn và thay đổi trạng thái cơ sở dữ liệu trong nút. js, bạn nên tách logic nghiệp vụ và ứng dụng Hầu hết logic nghiệp vụ nên được triển khai trong các mô hình hoặc dịch vụ và bạn sẽ kết thúc với các mô hình hoặc dịch vụ béo và bộ điều khiển mỏng src/dịch vụ/người dùng. Dịch vụ. ts
Tạo một lớp tiện ích để gửi emailDưới đây là lớp tiện ích để gửi mã thông báo đặt lại mật khẩu đến địa chỉ email của người dùng Vui lòng đọc API CRUD với Node. js và PostgreSQL. Gửi email HTML để được giải thích chi tiết
Tạo bộ điều khiểnBây giờ là lúc xác định bộ điều khiển sẽ gửi mã thông báo đặt lại mật khẩu và đặt lại mật khẩu Quên mật khẩu điều khiểnBộ điều khiển quên mật khẩu chịu trách nhiệm xác thực email của người dùng, tạo mã thông báo đặt lại mật khẩu và gửi mã thông báo đặt lại mật khẩu đến địa chỉ email của người dùng src/bộ điều khiển/auth. bộ điều khiển. ts
Dưới đây là một bản tóm tắt về những gì đã xảy ra trong 9
Tạo bộ điều khiển đặt lại mật khẩuBây giờ, hãy xác định 1 sẽ xác thực mã thông báo đặt lại và cập nhật mật khẩu của người dùng trong cơ sở dữ liệu PostgreSQLsrc/bộ điều khiển/auth. bộ điều khiển. ts
Đây là bảng phân tích về những gì tôi đã làm trong đoạn mã trên
Thêm các tuyến đườngTiếp theo, thêm các route sau vào tệp 6. Ngoài ra, hãy nhớ gọi phần mềm trung gian xác thực lược đồ trước bộ điều khiểnsrc/tuyến/auth. tuyến đường. ts
Tệp 6 bây giờ trông như thế nàysrc/tuyến/auth. tuyến đường. ts 0Phần kết luậnTrong bài viết này, bạn đã học cách triển khai các chức năng quên/đặt lại mật khẩu với Node. js, Prisma, PostgreSQL, Nodemailer, Redis, Pug và Docker-compose Làm cách nào để đặt lại mật khẩu trong nút js?Hãy làm theo các bước sau để tạo email quên hoặc đặt lại mật khẩu trong nút js express với MySQL. . Bước 1 – Cài đặt Node Express App JS Bước 2 – Cài đặt các Mô-đun Node js cần thiết Bước 3 – Kết nối ứng dụng Node Express JS với DB Bước 4 – Nhập các Mô-đun đã cài đặt trong ứng dụng. js Bước 5 – Tạo Lộ trình Quên và Đặt lại Mật khẩu Làm cách nào để đặt lại mật khẩu trong HTML?Luồng đặt lại mật khẩu như sau. . Người dùng yêu cầu email đặt lại mật khẩu. Mặt tiền người dùng gửi cho người dùng một email. . Người dùng nhấp vào liên kết. Liên kết có mã thông báo đặc biệt và uuid trong URL Người dùng gửi mật khẩu mới của họ. Người dùng gửi mật khẩu mới của họ với biểu mẫu đặt lại mật khẩu trên trang Làm cách nào để triển khai quên mật khẩu trong NestJs?ứng dụng js sử dụng NestJs. Đó là dòng chảy chung. Người dùng nhập email của mình ở dạng "quên mật khẩu" và gửi yêu cầu. Máy chủ tạo mã thông báo jwt với ID của người dùng làm tải trọng, sau đó gửi email có mã thông báo làm liên kết để đặt lại mật khẩu (ví dụ. ĐƯỢC. thí dụ. com/reset/generated_jwt_token )
Làm cách nào để gửi email từ nút js?Cách gửi email trong Node. . Cài đặt Nodemailer thông qua lệnh sau. npm cài đặt nodemailer --save hoặc sợi thêm nodemailer Sau khi hoàn thành, hãy đưa nó vào ứng dụng web của bạn Tạo trình vận chuyển Nodemailer Đặt tùy chọn tin nhắn Nodemailer Gửi thư với sendMail() |