Triển khai chức năng đặt lại mật khẩu an toàn với Node.js Express

Tram Ho

1. Trước hết

Bài viết này mô tả cách triển khai chức năng đặt lại mật khẩu an toàn trong ứng dụng Node.js Express của bạn. Đặt lại mật khẩu là một tính năng quan trọng để đảm bảo tính bảo mật và trải nghiệm người dùng tốt. Để thực hiện điều này, chúng tôi sẽ hướng dẫn bạn qua quy trình, từng bước, từ thiết lập môi trường đến gửi email đặt lại đến cuối cùng là cập nhật mật khẩu người dùng của bạn.

2. Cài đặt dự án

2.1 Khởi tạo dự án

Đầu tiên, tạo một thư mục mới cho dự án của bạn và điều hướng đến nó trên dòng lệnh. Tiếp theo, khởi tạo dự án với tệp pack.json bằng cách chạy lệnh bên dưới.

2.2 Cài đặt phụ thuộc

Sau đó chạy lệnh sau để cài đặt các phụ thuộc cần thiết cho dự án này.

Những phụ thuộc này bao gồm:

  • express: khung Express cốt lõi
  • mongoose: Thư viện mô hình hóa đối tượng MongoDB cho Node.js
  • bcryptjs: một thư viện để băm và so sánh mật khẩu
  • jsonwebtoken: Một thư viện để tạo và xác thực JSON Web Tokens
  • gật đầu: mô-đun để gửi email
  • dotenv: module đọc biến môi trường từ file .env

3. Cài đặt môi trường

3.1 Tạo tệp .env

Tạo tệp .env trong thư mục gốc của dự án để lưu trữ dữ liệu nhạy cảm và cài đặt dành riêng cho môi trường. Thêm các dòng sau vào tệp.

Đảm bảo thay thế trình giữ chỗ bằng các giá trị phù hợp với dịch vụ email và thông tin đăng nhập tài khoản của bạn.

3.2 Tải biến môi trường

Trong tệp ứng dụng chính của bạn (ví dụ: app.js), hãy nhập mô-đun dotenv và đặt nó để tải các biến môi trường từ tệp .env của bạn.

4. Cấu hình cơ sở dữ liệu

4.1 Kết nối với MongoDB

Sử dụng Mongoose để thiết lập kết nối tới cơ sở dữ liệu MongoDB của bạn. Cập nhật tệp app.js của bạn bằng mã bên dưới.

4.2 Xác định mô hình và lược đồ người dùng

Tạo một thư mục mới có tên models và tạo một tệp có tên User.js bên trong nó. Xác định lược đồ người dùng và mô hình bằng đoạn mã sau:

5. Thực hiện chức năng đặt lại mật khẩu

5.1 Cấu hình tuyến đường

Tạo một thư mục mới có tên là các tuyến đường và tạo một tệp có tên auth.js bên trong nó. Đặt các tuyến đường sau.

  • /auth/forgot-password: để bắt đầu quá trình đặt lại mật khẩu
  • /auth/reset-password: để xử lý việc đặt lại mật khẩu thực tế

Sau đó nhập và sử dụng bộ định tuyến auth.js trong tệp app.js của bạn.

5.2 Tạo bộ điều khiển xác thực

Tạo một thư mục mới có tên là bộ điều khiển và bên trong nó tạo một tệp có tên authController.js. Tệp này chứa các chức năng của bộ điều khiển để xử lý quá trình đặt lại mật khẩu.

5.3 Thực hiện chức năng quên mật khẩu

Trong tệp authController.js, hãy triển khai chức năng forgetPassword để xử lý các yêu cầu đặt lại mật khẩu.

5.4 Thực hiện chức năng resetPassword

Trong tệp authController.js , hãy triển khai chức năng resetPassword để xử lý các xác nhận đặt lại mật khẩu và cập nhật mật khẩu của người dùng.

6. Kiểm tra việc triển khai của bạn

Để kiểm tra chức năng đặt lại mật khẩu, hãy sử dụng một công cụ như Postman hoặc curl để gửi yêu cầu đến các điểm cuối /auth/forgot-password và /auth/reset-password. Dưới đây là các bước để gửi yêu cầu bằng Postman.

  1. Mở Postman và tạo một yêu cầu mới.
  2. Đặt loại yêu cầu thành POST và nhập http://localhost:3000/auth/forgot-password vào URL.
  3. Chọn tab Nội dung, chọn thô và chọn JSON.
  4. Nhập đối tượng JSON sau vào phần nội dung và chỉ định địa chỉ email của người dùng đã đăng ký.
  5. Nhấp vào nút Send để gửi yêu cầu của bạn. Một phản hồi thành công sẽ được trả lại và một email đặt lại mật khẩu sẽ được gửi đến địa chỉ email được chỉ định.
  6. Sao chép liên kết đặt lại được cung cấp trong email và tạo một yêu cầu mới trong Postman .
  7. Đặt loại yêu cầu thành POST và nhập mã thông báo http://localhost:3000/auth/reset-password?token=copied vào URL.
  8. Chọn lại tab Body , chọn raw và chọn JSON .
  9. Nhập đối tượng JSON sau vào phần nội dung và chỉ định mật khẩu mới.
  10. Nhấp vào nút Gửi để gửi yêu cầu của bạn. Một phản hồi thành công được trả về và mật khẩu được đặt lại.

7. Tóm tắt

Trong bài viết này, chúng ta đã xem cách triển khai chức năng đặt lại mật khẩu an toàn trong ứng dụng Node.js Express. Điều này cho phép người dùng lấy lại quyền truy cập vào tài khoản của họ một cách an toàn ngay cả khi họ quên mật khẩu.

Phương pháp được triển khai lần này là một ví dụ và trong môi trường sản xuất thực tế, bạn nên thêm xử lý lỗi và xác thực. Điều quan trọng nữa là xây dựng giao diện người dùng đặt lại mật khẩu ở giao diện người dùng để mang lại trải nghiệm tốt hơn cho người dùng.

cuối cùng

Tôi luôn mắc nợ. Tôi hy vọng bạn thích bài viết này và học được một cái gì đó mới.

Hẹn gặp lại các bạn trong bài viết tiếp theo! Nếu bạn thích bài viết này, hãy nhấn “THÍCH” và đăng ký để ủng hộ tôi. Cảm ơn rất nhiều.

Giới thiệu

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo