Nút đăng nhập js MongoDB

Tôi đang bắt đầu Chuỗi CodeLab, trong đó tôi sẽ xây dựng thứ gì đó thú vị và chia sẻ với cộng đồng

Hôm nay, chúng tôi sẽ triển khai API xác thực trong Node bằng JWT, express và MongoDB

Tôi khuyên bạn nên theo dõi mục lục và đừng bỏ lỡ bất kỳ bước nào. Tôi sẽ cung cấp liên kết mã ứng dụng đầy đủ ở cuối

Mục lục


1. Giới thiệu

Xác thực - Đó là một quá trình xác định danh tính người dùng

Xác thực người dùng bao gồm nhiều bước khác nhau, vui lòng xem sơ đồ này để biết thêm. Chúng tôi sẽ sử dụng quy trình này để xây dựng hệ thống xác thực trong ứng dụng của mình

Nút đăng nhập js MongoDB


2. điều kiện tiên quyết

Bạn nên có kiến ​​thức trước về

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
3,
npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
4. Kiến thức về cú pháp ES6 là một lợi thế. Và, cuối cùng nodejs sẽ được cài đặt trên hệ thống của bạn


3. Các gói yêu cầu

Bạn sẽ cần các gói 'npm' sau đây

  1. bày tỏ
    Express là một Node tối thiểu và linh hoạt. js khung ứng dụng web cung cấp một bộ tính năng mạnh mẽ cho các ứng dụng web và di động

  2. trình xác nhận nhanh
    Để Xác thực dữ liệu nội dung trên máy chủ trong khung nhanh, chúng tôi sẽ sử dụng thư viện này. Đó là thư viện xác thực dữ liệu phía máy chủ. Vì vậy, ngay cả khi người dùng độc hại bỏ qua xác minh phía máy khách, thì quá trình xác thực dữ liệu phía máy chủ sẽ bắt được và đưa ra lỗi

  3. trình phân tích nội dung
    Đó là phần mềm trung gian

    npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
    
    4 để phân tích dữ liệu nội dung

  4. bcryptjs
    Thư viện này sẽ được sử dụng để băm mật khẩu và sau đó lưu trữ nó vào cơ sở dữ liệu. Bằng cách này, ngay cả quản trị viên ứng dụng cũng không thể truy cập vào tài khoản của người dùng

  5. jsonwebtoken
    jsonwebtoken sẽ được sử dụng để mã hóa tải trọng dữ liệu của chúng tôi khi đăng ký và trả lại mã thông báo. Chúng tôi có thể sử dụng mã thông báo đó để xác thực chính mình với các trang được bảo mật như bảng điều khiển. Cũng sẽ có một tùy chọn để đặt tính hợp lệ của các mã thông báo đó, vì vậy bạn có thể chỉ định khoảng thời gian mà mã thông báo đó sẽ tồn tại

  6. cầy mangut
    Mongoose là một công cụ mô hình hóa đối tượng MongoDB được thiết kế để hoạt động trong môi trường không đồng bộ. Mongoose hỗ trợ cả lời hứa và cuộc gọi lại


4. Bắt đầu dự án

Chúng tôi sẽ bắt đầu bằng cách tạo một dự án nút. Vì vậy, hãy tạo một thư mục mới với tên 'node-auth' và làm theo các bước bên dưới. Tất cả các tệp dự án phải nằm trong thư mục 'nút-auth'

npm init

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

npm init sẽ hỏi bạn một số thông tin cơ bản về dự án. Bây giờ, bạn đã tạo dự án nút, đã đến lúc cài đặt các gói cần thiết. Vì vậy, hãy tiếp tục và cài đặt các gói bằng cách chạy lệnh bên dưới

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, hãy tạo một chỉ mục tệp. js và thêm mã này

// File : index.js

const express = require("express");
const bodyParser = require("body-parser");

const app = express();

// PORT
const PORT = process.env.PORT || 4000;

app.get("/", (req, res) => {
  res.json({ message: "API Working" });
});


app.listen(PORT, (req, res) => {
  console.log(`Server Started at PORT ${PORT}`);
});

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Nếu bạn gõ

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
6 trong thiết bị đầu cuối, máy chủ sẽ bắt đầu tại CỔNG 4000

Bạn đã thiết lập thành công ứng dụng ứng dụng NodeJS của mình. Đã đến lúc thiết lập cơ sở dữ liệu để thêm nhiều chức năng hơn


5. Thiết lập cơ sở dữ liệu MongoDB

Chúng tôi sẽ sử dụng Cơ sở dữ liệu MongoDB để lưu trữ người dùng của chúng tôi. Bạn có thể sử dụng máy chủ MongoDB trên đám mây hoặc máy chủ MongoDB cục bộ

Trong CodeLab này, chúng tôi sẽ sử dụng máy chủ Cloud MongoDB được gọi là mLab

Vì vậy, trước tiên, hãy tiếp tục và đăng ký trên mLab. Và làm theo các bước dưới đây

  1. Sau khi đăng ký thành công, Click vào nút Tạo mới trên trang chủ

  2. Bây giờ, chọn bất kỳ nhà cung cấp đám mây nào, ví dụ AWS. Trong Loại kế hoạch, chọn Hộp cát miễn phí, sau đó nhấp vào nút Tiếp tục ở dưới cùng bên phải

  3. Chọn khu vực (bất kỳ) và nhấp vào tiếp tục

  4. Nhập tên DB (bất kỳ). Tôi đang sử dụng nút-auth. Nhấp vào tiếp tục và sau đó gửi đơn đặt hàng trên trang tiếp theo. Đừng lo lắng nó miễn phí

  5. Bây giờ, Bạn sẽ được chuyển hướng đến trang chủ. Chọn DB của bạn tôi. xác thực nút

  6. Sao chép URI MongoDB tiêu chuẩn

  7. Bây giờ, bạn cần thêm người dùng vào cơ sở dữ liệu của mình. Từ 5 tab bên dưới, nhấp vào Người dùng và thêm người dùng bằng cách nhấp vào Thêm người dùng cơ sở dữ liệu

Bây giờ, bạn đã có người dùng cơ sở dữ liệu của mình. Thay thế && bằng tên người dùng và mật khẩu DB của bạn

mongodb://:@ds257698.mlab.com:57698/node-auth

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Vì vậy, Địa chỉ máy chủ Mongo (MongoURI) sẽ trông như thế này. Đừng cố kết nối trên MongoURI của tôi. Nó chỉ là một tên người dùng và mật khẩu giả. 😄😄

________số 8_______

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, bạn có mongoURI, bạn đã sẵn sàng kết nối ứng dụng xác thực nút của mình với cơ sở dữ liệu. Vui lòng làm theo các bước dưới đây


6. Cấu hình mô hình người dùng

Hãy bắt đầu và trước tiên hãy tạo một thư mục

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
7. Thư mục này sẽ lưu giữ thông tin kết nối cơ sở dữ liệu

Tạo một tệp có tên. db. js trong cấu hình

//FILENAME : db.js

const mongoose = require("mongoose");

// Replace this with your MONGOURI.
const MONGOURI = "mongodb://testuser:[email protected]:57698/node-auth";

const InitiateMongoServer = async () => {
  try {
    await mongoose.connect(MONGOURI, {
      useNewUrlParser: true
    });
    console.log("Connected to DB !!");
  } catch (e) {
    console.log(e);
    throw e;
  }
};

module.exports = InitiateMongoServer;

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, chúng ta đã hoàn thành việc kết nối cơ sở dữ liệu. Hãy tạo Mô hình người dùng để lưu người dùng đã đăng ký của chúng tôi

Hãy tiếp tục và tạo một thư mục mới có tên model. Trong thư mục mô hình, tạo một tệp mới Người dùng. js

Chúng tôi sẽ sử dụng cầy mangut để tạo UserSchema

Người sử dụng. js


//FILENAME : User.js

const mongoose = require("mongoose");

const UserSchema = mongoose.Schema({
  username: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  createdAt: {
    type: Date,
    default: Date.now()
  }
});

// export model user with UserSchema
module.exports = mongoose.model("user", UserSchema);

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, chúng ta đã hoàn thành với

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
8,
npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
9. Vì vậy, hãy tiếp tục và cập nhật chỉ mục của chúng tôi. js để kết nối API của chúng tôi với cơ sở dữ liệu

mục lục. js

const express = require("express");
const bodyParser = require("body-parser");
const InitiateMongoServer = require("./config/db");

// Initiate Mongo Server
InitiateMongoServer();

const app = express();

// PORT
const PORT = process.env.PORT || 4000;

// Middleware
app.use(bodyParser.json());

app.get("/", (req, res) => {
  res.json({ message: "API Working" });
});


app.listen(PORT, (req, res) => {
  console.log(`Server Started at PORT ${PORT}`);
});


Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Xin chúc mừng 😄😄 , Bạn đã kết nối thành công ứng dụng của mình với máy chủ MongoDB

Bây giờ, điều tiếp theo chúng ta phải làm là thực hiện một lộ trình

// File : index.js

const express = require("express");
const bodyParser = require("body-parser");

const app = express();

// PORT
const PORT = process.env.PORT || 4000;

app.get("/", (req, res) => {
  res.json({ message: "API Working" });
});


app.listen(PORT, (req, res) => {
  console.log(`Server Started at PORT ${PORT}`);
});

0 để đăng ký người dùng mới. Chúng ta sẽ thấy điều này trong phần tiếp theo


7. Đăng ký người dùng

Lộ trình đăng ký người dùng sẽ là '/user/signup'

Tạo một thư mục có tên là các tuyến đường. Trong thư mục 'tuyến đường', tạo một tệp có tên

// File : index.js

const express = require("express");
const bodyParser = require("body-parser");

const app = express();

// PORT
const PORT = process.env.PORT || 4000;

app.get("/", (req, res) => {
  res.json({ message: "API Working" });
});


app.listen(PORT, (req, res) => {
  console.log(`Server Started at PORT ${PORT}`);
});

1

tuyến đường/người dùng. js


// Filename : user.js

const express = require("express");
const { check, validationResult} = require("express-validator/check");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const router = express.Router();

const User = require("../model/User");

/**
 * @method - POST
 * @param - /signup
 * @description - User SignUp
 */

router.post(
    "/signup",
    [
        check("username", "Please Enter a Valid Username")
        .not()
        .isEmpty(),
        check("email", "Please enter a valid email").isEmail(),
        check("password", "Please enter a valid password").isLength({
            min: 6
        })
    ],
    async (req, res) => {
        const errors = validationResult(req);
        if (!errors.isEmpty()) {
            return res.status(400).json({
                errors: errors.array()
            });
        }

        const {
            username,
            email,
            password
        } = req.body;
        try {
            let user = await User.findOne({
                email
            });
            if (user) {
                return res.status(400).json({
                    msg: "User Already Exists"
                });
            }

            user = new User({
                username,
                email,
                password
            });

            const salt = await bcrypt.genSalt(10);
            user.password = await bcrypt.hash(password, salt);

            await user.save();

            const payload = {
                user: {
                    id: user.id
                }
            };

            jwt.sign(
                payload,
                "randomString", {
                    expiresIn: 10000
                },
                (err, token) => {
                    if (err) throw err;
                    res.status(200).json({
                        token
                    });
                }
            );
        } catch (err) {
            console.log(err.message);
            res.status(500).send("Error in Saving");
        }
    }
);

module.exports = router;

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, chúng tôi đã tạo đăng ký người dùng trong 'tuyến đường/người dùng. js'. Vì vậy, chúng ta cần nhập cái này vào chỉ mục. js để làm cho nó hoạt động

Vì vậy, mã tệp chỉ mục được cập nhật sẽ trông như thế này
mục lục. js


const express = require("express");
const bodyParser = require("body-parser");
const user = require("./routes/user"); //new addition
const InitiateMongoServer = require("./config/db");

// Initiate Mongo Server
InitiateMongoServer();

const app = express();

// PORT
const PORT = process.env.PORT || 4000;

// Middleware
app.use(bodyParser.json());

app.get("/", (req, res) => {
  res.json({ message: "API Working" });
});


/**
 * Router Middleware
 * Router - /user/*
 * Method - *
 */
app.use("/user", user);

app.listen(PORT, (req, res) => {
  console.log(`Server Started at PORT ${PORT}`);
});

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Hãy bắt đầu đăng ký người dùng bằng cách sử dụng người đưa thư. Người đưa thư là một công cụ để kiểm tra API

Nút đăng nhập js MongoDB


8. Đăng nhập người dùng

Bây giờ, đã đến lúc triển khai bộ định tuyến Đăng nhập sẽ được gắn trên '/user/login'

Đây là đoạn mã cho chức năng đăng nhập. Thêm đoạn mã dưới đây vào người dùng. js

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Nút đăng nhập js MongoDB

9. Nhận người dùng đã đăng nhập

Bây giờ, và của bạn đang hoạt động và đổi lại bạn sẽ nhận được mã thông báo

Vì vậy, nhiệm vụ tiếp theo của chúng tôi sẽ là Truy xuất người dùng đã đăng nhập bằng cách sử dụng mã thông báo. Hãy đi và thêm chức năng này

Lộ trình

// File : index.js

const express = require("express");
const bodyParser = require("body-parser");

const app = express();

// PORT
const PORT = process.env.PORT || 4000;

app.get("/", (req, res) => {
  res.json({ message: "API Working" });
});


app.listen(PORT, (req, res) => {
  console.log(`Server Started at PORT ${PORT}`);
});

2 sẽ trả về người dùng của bạn nếu bạn chuyển mã thông báo vào tiêu đề. Trong tuyến đường tập tin. js, hãy thêm đoạn mã dưới đây

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
1

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Như bạn có thể thấy, chúng tôi đã thêm phần mềm trung gian xác thực làm tham số trong tuyến đường /user/me GET, vì vậy hãy định nghĩa hàm xác thực

Hãy tiếp tục và tạo một thư mục mới có tên là phần mềm trung gian. Trong thư mục này, tạo một tệp có tên auth. js

Phần mềm trung gian xác thực này sẽ được sử dụng để xác minh mã thông báo, truy xuất người dùng dựa trên tải trọng mã thông báo

phần mềm trung gian/xác thực. js

npm install express express-validator body-parser bcryptjs jsonwebtoken mongoose --save
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

yay. Bạn đã tạo thành công API xác thực trong nodejs. Bây giờ, bạn có thể tiếp tục và kiểm tra điểm cuối /user/me sau khi đăng nhập

Làm thế nào để kiểm tra ứng dụng?

Cần có PostMan để kiểm tra API. Nếu bạn chưa cài đặt PostMan trước, hãy cài đặt nó

  1. Đầu tiên, đăng ký người dùng hoặc đăng nhập nếu bạn đã đăng ký

  2. Từ bước 1, bạn sẽ nhận được mã thông báo. Sao chép mã thông báo đó và đặt vào tiêu đề

  3. Nhấn gửi

Đây là một bản xem trước của thử nghiệm

Nút đăng nhập js MongoDB

10. Phần kết luận

Trong CodeLab - 1 này, chúng tôi đã đề cập đến xác thực trong nodejs bằng cách sử dụng express, jsonwebtoken và MongoDB. Chúng tôi đã học về cách viết phần mềm trung gian

Đây là liên kết của mã đầy đủ cho CodeLab này. https. //github. com/dipakr/nút-auth

Ngoài ra, tôi rất muốn biết bạn muốn đề cập đến điều gì nữa trong CodeLabs tiếp theo


Tôi rất vui vì bạn đã đọc đến đây, Xin hãy cho một số ❤️ ❤️

Nếu bạn gặp sự cố khi chạy/hiểu ứng dụng này, hãy cho tôi biết trong phần nhận xét. Đừng quên đưa ra phản hồi của bạn. Nhận phản hồi giúp tôi cải thiện

Làm cách nào để đăng nhập với nodejs và MongoDB?

Đăng nhập và đăng ký Node js Express với MongoDB .
Bước 1 – Cài đặt ứng dụng và mô-đun Node JS Express
Bước 2 – Kết nối ứng dụng Node Express Js với MongoDB
Bước 3 – Tạo mô hình
Bước 4 – Nhập mô-đun và tạo tuyến đường trong ứng dụng. js
Bước 5 – Tạo Chế độ xem Đăng nhập & Đăng ký
Bước 6 – Bắt đầu phát triển máy chủ

Làm cách nào để kết nối MongoDB với trang đăng nhập?

Cách kết nối với MongoDB .
Tạo cơ sở dữ liệu trên MongoDB. Kết nối với vỏ MongoDB. Tạo cơ sở dữ liệu "testdb". Tạo bộ sưu tập "người dùng" và chèn nó vào "testdb"
Thiết lập người dùng. Kết nối với db quản trị. Tạo quản trị viên người dùng. .
Tạo kết nối tới MongoDB trên CPD. Đặt thông tin cần thiết

Làm cách nào để kết nối MongoDB với Node js bằng tên người dùng và mật khẩu?

var db = new MongoDB(dbName, new Server('localhost', 27017 , {auto_reconnect. đúng}), {w. 1}); . open(function(e, db){ if (e) { console. nhật ký (e); . log('đã kết nối với cơ sở dữ liệu. ' + dbName);

Làm cách nào để đăng nhập vào nút js?

Thiết lập kết nối cơ sở dữ liệu trong Node. js. Bắt đầu bằng cách tạo một cơ sở dữ liệu mới trong môi trường MySQL của bạn có tên là login-db . Sau đó, tạo bảng người dùng với ID, tên, email và mật khẩu.