Hướng dẫn login node js express + mongodb - nút đăng nhập js express + mongodb
Trong hướng dẫn này, chúng tôi sẽ xây dựng một Node.js Express đăng nhập và đăng ký API REST API hỗ trợ JWT (JSONWEBETOKEKE) và hoạt động với cơ sở dữ liệu MongoDB bằng cách sử dụng ODM Mongoose. Bạn se biêt: Show
Các bài viết liên quan: - Node.js & MongoDB: Ví dụ về mã thông báo làm mới JWT - Ví dụ xác thực ngăn xếp của MERN - Xác thực ngăn xếp trung bình với Angular 8 Ví dụ - xác thực ngăn xếp trung bình Ví dụ-Node.js, Express & MongoDB: Xây dựng một ví dụ API REST CRUD-Hướng dẫn mối quan hệ một-nhiều của MongoDB với các ví dụ Mongoose-MongoDB nhiều-đến nhiều Triển khai: Docker Compose: Node.js Express và MongoDB Ví dụ Nội dung
Tổng quanLưu lượng đăng nhập và đăng ký
Cấu trúc dự án
Lưu lượng đăng nhập và đăng kýNode.js Express Đăng nhập với Kiến trúc MongoDB Công nghệCookies if Client accesses protected resources. Node.js Express Đăng nhập với Kiến trúc MongoDBCông nghệ Cấu trúc dự ánHTTP request that matches a route will be checked by CORS Middleware before coming to Security layer. Tạo Node.js Đăng nhập với ứng dụng MongoDB layer includes:
Xác định mô hình Mongoose Khởi tạo Mongoose interact with MongoDB Database via Mongoose library and send HTTP response (token, user information, data based on roles…) to Client. Công nghệ
Cấu trúc dự ánTạo Node.js Đăng nhập với ứng dụng MongoDB Thiết lập máy chủ web Expressconfig
Khởi tạo Mongooseroutes
Tạo bộ điều khiểnmiddlewares
Xác định các tuyến đườngcontrollers
Đọc thêmmodels for Mongoose Models
Mã nguồn Tạo Node.js Đăng nhập với ứng dụng MongoDBThiết lập máy chủ web Express
Định cấu hình cơ sở dữ liệu MongoDB
Xác định mô hình Mongoose
Khởi tạo Mongoose
Thiết lập máy chủ web ExpressĐịnh cấu hình cơ sở dữ liệu MongoDB
Xác định mô hình Mongoose 1, 3 and 2 modules:
Tạo bộ điều khiển Hãy nói về mã sau:
Bây giờ, hãy để chạy ứng dụng với lệnh: 9. Mở trình duyệt của bạn bằng URL http: // localhost: 8080/, bạn sẽ thấy:Open your browser with url http://localhost:8080/, you will see: Định cấu hình cơ sở dữ liệu MongoDBTrong thư mục ứng dụng, tạo thư mục cấu hình cho cấu hình.app folder, create config folder for configuration. Sau đó tạo tệp db.config.js mới chứa các tham số để thiết lập MongoDB sau:
Xác định mô hình MongooseTrong thư mục mô hình, hãy tạo mô hình dữ liệu 0 và 1 như mã sau:models/role.model.js/role.model.js
models/user.model.js/user.model.js
Các mô hình Mongoose này đại diện cho bộ sưu tập người dùng & vai trò trong cơ sở dữ liệu MongoDB. Đối tượng 0 sẽ có mảng 3 chứa ID trong bộ sưu tập vai trò làm tài liệu tham khảo.users & roles collections in
MongoDB database. 0 object will have a 3 array that contains ids in roles collection as reference.Loại này được gọi là mô hình dữ liệu tham chiếu hoặc chuẩn hóa. Bạn có thể tìm thêm chi tiết tại: Hướng dẫn mối quan hệ một-nhiều của MongoDB với các ví dụ Mongoose Sau khi khởi tạo Mongoose, chúng tôi không cần phải viết các chức năng CRUD vì Mongoose hỗ trợ tất cả chúng:
Các chức năng này sẽ được sử dụng trong bộ điều khiển và đường giữa của chúng tôi. Khởi tạo MongooseBây giờ hãy tạo ứng dụng/model/index.js với nội dung như thế này:app/models/index.js with content like this:
Mở máy chủ.js và thêm mã sau để mở kết nối Mongoose vào cơ sở dữ liệu MongoDB: 0Hàm 5 giúp chúng tôi tạo 3 hàng quan trọng trong bộ sưu tập 3.Định cấu hình khóa AuthCác chức năng của JsonWebToken như 7 or 8 use algorithm that needs a secret key (as String) to encode and decode token.Trong thư mục ứng dụng/config, hãy tạo tệp auth.config.js với mã sau:app/config folder, create auth.config.js file with following code: 1Bạn có thể tạo chuỗi 5 của riêng bạn.Tạo các chức năng phần mềm trung gianĐể xác minh hành động đăng ký, chúng tôi cần 2 chức năng: - Kiểm tra các bản sao cho 0 và 1 - kiểm tra xem 3 trong yêu cầu có hợp pháp hay không– check duplications for 0 and 1– check if 3 in the request is legal or notmiddlewares/verifySignUp.js/verifySignUp.js 2Để xử lý xác thực & ủy quyền, chúng tôi tạo các chức năng sau: - Kiểm tra xem 3 có được cung cấp, hợp pháp hay không. Chúng tôi nhận được mã thông báo từ phiên yêu cầu HTTP, sau đó sử dụng hàm 7 của JsonWebToken - kiểm tra xem 3 của người dùng có chứa vai trò cần thiết hay không- check if 3 is provided, legal or not. We get token from HTTP request session, then use
jsonwebtoken's 7 function- check if 3 of the user contains required role or notmiddlewares/authJwt.js/authJwt.js 3middlewares/index.js/index.js 4Tạo bộ điều khiểnBộ điều khiển để đăng ký, đăng nhập, đăng xuấtCó 3 chức năng chính để xác thực: - 6: Tạo người dùng mới trong cơ sở dữ liệu MongoDB (vai trò là người dùng nếu không chỉ định vai trò) - 7:- 6: create new User in
MongoDB database (role is user if not specifying role)- 7:
- 1: Xóa phiên hiện tại.controllers/auth.controller.js/auth.controller.js 5Có 4 chức năng: - 2 để truy cập công khai - 3 cho người dùng loggedin (bất kỳ vai trò nào) - 4 cho người dùng điều hành - 5 cho người dùng quản trị– 2 for public access– 3 for loggedin users (any role)– 4 for moderator users– 5 for admin userscontrollers/user.controller.js/user.controller.js 6Hãy kết hợp các đường giữa với các chức năng của bộ điều khiển trong phần tiếp theo. Xác định các tuyến đườngKhi khách hàng gửi yêu cầu cho điểm cuối bằng yêu cầu HTTP (nhận, đăng, đặt, xóa), chúng tôi cần xác định cách máy chủ sẽ phản hồi bằng cách thiết lập các tuyến đường. Chúng tôi có thể tách các tuyến đường của chúng tôi thành 2 phần: để xác thực và cho phép (truy cập các tài nguyên được bảo vệ). Authentication:
routes/auth.routes.js/auth.routes.js 7Authorization:
routes/user.routes.js/user.routes.js 8Đừng quên thêm các tuyến đường này vào Server.js: 9Chạy & Kiểm tra với kết quảChạy ứng dụng Node.js với lệnh: 9.Bảng điều khiển cho thấy: 0Hãy kiểm tra bộ sưu tập 3 trong cơ sở dữ liệu MongoDB:Đăng ký một số người dùng bằng API 5:
Bộ sưu tập 0 Sau khi đăng ký có thể trông như thế này.Truy cập tài nguyên công cộng: Nhận 2Tài nguyên được bảo vệ truy cập: Nhận 3Đăng nhập một tài khoản (có mật khẩu sai): Đăng 7Đăng nhập bằng tên người dùng và mật khẩu chính xác: Đăng 7Bạn có thể kiểm tra cookie với JWT: Truy cập các tài nguyên được bảo vệ có tài khoản pháp lý: Nhận 3Sự kết luậnChúc mừng! Hôm nay chúng tôi đã học được rất nhiều điều thú vị về Node.js Express Đăng nhập và đăng ký người dùng với MongoDB và JWT (JsonWebToken) chỉ trong một ví dụ API REST. Bạn cũng biết cách thực hiện ủy quyền dựa trên vai trò để hạn chế quyền truy cập vào các tài nguyên được bảo vệ. Bạn nên tiếp tục biết cách thực hiện làm mới mã thông báo: Node.js & MongoDB: JWT Làm mới ví dụ về mã thông báo Nếu bạn cần một mặt trước làm việc cho phần cuối này, bạn có thể tìm thấy ứng dụng khách trong bài đăng: (chỉ cần thay đổi lưu trữ cục bộ thành cookie) - Vue - Angular 8 / Angular 10 / Angular 11 / Angular 12 / Angular 13 - React / React Hook / React Redux JWT Ví dụ xác thực Học hỏi! Hẹn gặp lại. Đọc thêm
FullStack: - Mevn: Vue + Node.js + Express + MongoDB Ví dụ - có nghĩa là:
- MERN: React + Node.js + Express + MongoDB Ví dụ Triển khai: Docker Compose: Node.js Express và MongoDB Ví dụ Mã nguồnBạn có thể tìm thấy mã nguồn đầy đủ cho hướng dẫn này trên GitHub. |