Đăng nhập nodejs mongodb

Xác thực trong NodeJS là bài hướng dẫn bạn cách khai thác chức năng liên quan đến người dùng như đăng nhập, kiểm tra đăng nhập, mã khóa mật khẩu …

Đăng nhập nodejs mongodb

Tại sao có xác thực?

Bởi vì trong trang web, có những chức năng mà người dùng phải đăng nhập mới có thể sử dụng, ví dụ chức năng đặt hàng, quản lý sản phẩm, đổi mật khẩu, hay tải xuống tài liệu quan trọng… Xác thực là thuật ngữ nói về

Xác thực trong NodeJS đang hoạt động như thế nào?

Đăng nhập nodejs mongodb
Tổ chức hoạt động Authentication

B. Chuẩn bị học Authentication trong NodeJS

1. Tạo cơ sở dữ liệu và bảng

Bạn cần có 1 bảng chứa thông tin của người truy cập, bảng sẽ có các cột như tên người dùng, mật khẩu, email, họ tên… để lưu thông tin người truy cập. use. Dữ liệu trong bảng này được dùng để so sánh với thông tin mà người dùng gửi lên, từ đó bạn sẽ biết thông tin họ nhập vào là sai

Thực hiện. Mời bạn tạo bảng có tên người dùng trong cửa hàng cơ sở dữ liệu như đã thực hiện trong bài Sử dụng Restful API NodeJS , nếu đã tạo bảng người dùng rồi thì thôi khỏi tạo lại, dùng nó để thực hiện bài này luôn nhé

2. Cài đặt module express và express-generator

Nếu máy bạn đã cài đặt rồi thì bỏ qua, còn chưa thì mở dòng lệnh lên và cài đặt nhé

Thực hiện. Mở dòng lệnh rồi nhập  lệnh npm install -g express. Tiếp tục nhập lệnh  npm -g install express-generator

3. Tạo dự án và cài đặt mô-đun để thực thi tập tin

a. Tạo dự án. Mở dòng lệnh rồi chạy lệnh để tạo dự án ( AuthenNodeJS là tên dự án thư mục, bạn đặt tên khác cũng được)

express --view=ejs AuthenNodeJS

Bạn sẽ thấy thư mục AuthenNodeJS xuất hiện các thư mục và tệp tin trong đó

b. Cài đặt mô-đun. Di chuyển vào thư mục mới tạo và chạy lệnh cài đặt mô-đun cần thiết

npm install
npm install mysql

4. Create model connection database

– Trong thư mục project, tạo thư mục tên models
– And create new file models/database. js after that code as after

var mysql = require('mysql'); 
var db = mysql.createConnection({   
    host: 'localhost',     
    user: 'root',     
    password: '',     
    database: 'shop' 
});  
db.connect(function(err) {    
   if (err) throw err;    
   console.log('Da ket noi database'); 
}); 
module.exports = db; //lệnh exports để xuất (public) ra, cho bên ngoài module có thể dùng được db

C. Xác thực trong NodeJS

1. Đăng ký thành viên và mã hóa mật khẩu

a. Tạo tuyến đường

– Mở ứng dụng. js and add code khai báo route cho controller

var tvRouter = require('./routes/thanhvien');
app.use('/thanhvien', tvRouter);

– Tạo file route/thanhvien. js và mã cho bộ điều khiển, nhúng mô-đun kết nối db và định tuyến cho chức năng đăng ký

var express = require('express');
var router = express.Router();
var db=require('../models/database'); 
router.get('/dangky', function(req, res) {
     res.render("dangky.ejs");
});
module.exports = router;

b Create view

– Tạo tập tin lượt xem/dangky. ejs và nhập chữ Đăng ký thành viên

- Bài kiểm tra. http. //máy chủ cục bộ. 3000/thanhvien/dangky nếu thấy chữ vừa nhập là chính xác

– Chế độ xem mã dangky. ejs to hien thi form



/thanhvien/luu" method="POST" class="col-6 border border-dark rounded p-3 m-auto" >
    
        Username
        username" id="un">
    
             Mật khẩu         password" id="pass">                   Email         email" id="email">                           ĐĂNG KÝ          

d. Lưu thông tin người dùng

– Định nghĩa route để nhận dữ liệu từ form trong router thanhvien
router.post('/luu', function(req, res) {
    let u = req.body.username;
    let p = req.body.password;
    let em = req.body.email;  
    let user_info ={username: u, password:p, email:em};  
    //let user_info = {};
    //user_info.username = u;
    //user_info.password = p;
    //user_info.email = em; 
    let sql = 'INSERT INTO users SET ?';
    db.query(sql, user_info);
    res.redirect("/thanhvien/camon");
})

e. Test register

1. Trong trình duyệt gõ http. //máy chủ cục bộ. 3000/thanhvien/dangky , will see current form

2. Nhập thông tin và gửi biểu mẫu

Đăng nhập nodejs mongodb

3. Sau khi gửi biểu mẫu sẽ thấy thông tin người dùng trong biểu mẫu được lưu vào cơ sở dữ liệu

f. Mã hóa mật khẩu của người dùng

Mật khẩu của người dùng được lưu trong cơ sở dữ liệu phải được mã hóa để đảm bảo an toàn cho thông tin của người dùng. Để thực hiện, bạn cần cài đặt thêm mô-đun bcryot để sử dụng

1. Cài đặt module bscript. npm cài đặt bcrypt
2. Mã lại hàm lưu trong bộ định tuyến thanhvien

router.post('/luu', function(req, res) {
    let u = req.body.username;
    let p = req.body.password;
    let em = req.body.email;  

    const bcrypt = require("bcrypt");        
    var salt = bcrypt.genSaltSync(10);
    var pass_mahoa = bcrypt.hashSync(p, salt);

    let user_info ={username: u, password:pass_mahoa, email:em};  
    let sql = 'INSERT INTO users SET ?';
    db.query(sql, user_info);
    res.redirect("/thanhvien/camon");
})

Bài kiểm tra. Giờ thì đăng ký lại, bạn sẽ thấy mật khẩu đã được mã hóa

2. Đăng nhập và xử lý đăng nhập

a. Tạo tuyến đường

– Code trong file routes/thanhvien. js to create dangnhap function

________số 8_______

b Create view

– Tạo file views/dangnhap. ejs và nhập chữ Form đăng nhập

- Bài kiểm tra. http. //máy chủ cục bộ. 3000/thanhvien/dangnhap nếu thấy chữ vừa nhập là chính xác

– Mã xem dangnhap. ejs to hien thi form



action="/thanhvien/dangnhap_" method="POST" class="col-6 border border-dark rounded p-3 m-auto" >
    
        Username
        username" id="un">
    
    
        Mật khẩu
        password" id="pass">
    
           
         ĐĂNG NHẬP
    
    

d. Xử lý đăng nhập

– Định nghĩa route dangnhap_ để kiễm tra username, pass
npm install
npm install mysql
0

e. Kiểm tra đăng nhập

1. Trong trình duyệt gõ http. //máy chủ cục bộ. 3000/thanhvien/dangnhap , will see form hiện ra
2. Nhập thông tin và gửi biểu mẫu
3. Sau khi gửi form , nếu gõ username , pass sai sẽ thấy form đăng nhập hiện lại , gõ user pass đúng sẽ được chuyển đến route thanhcong

e. Phiên lưu biến khi đăng nhập thành công

Để lưu biến phiên ghi nhận người dùng đã đăng nhập thành công, bạn sẽ sử dụng mô-đun express-session

1. Cài đặt module express-session. npm cài đặt phiên nhanh

2. Trong ứng dụng tập tin. js, mã để tải mô-đun

npm install
npm install mysql
1

3. Trong ứng dụng tập tin. js, viết code cấu hình module session (trên uph app. sử dụng(‘/thanhvien’, tvRouter) )

npm install
npm install mysql
2

4. Code back in the function dangnhap_ of routes/thanhvien

npm install
npm install mysql
3

4. Kiểm tra đăng nhập

– Trọng route/thanhvien. js, route download định nghĩa

npm install
npm install mysql
4

– Tạo lượt xem/tải xuống. ejs bà nhập văn bản

npm install
npm install mysql
5

- Bài kiểm tra. http. //máy chủ cục bộ. 3000/thanhvien/download , nếu thấy text vừa nhập text là chính xác

– Mã kiểm tra đăng nhập. code add in function download to be as after

npm install
npm install mysql
6

- Bài kiểm tra. if not posted, when see http. //máy chủ cục bộ. 3000/thanhvien/download sẽ được chuyển sang trang dangnhap, nếu đã đăng nhập thì mới xem được

5. Trở lại trang trước

– Trong các chức năng bắt người dùng phải đăng nhập, ghi vào địa chỉ phiên của trang hiện hành (trang cũ)

– Trong chức năng xử lý đăng nhập, nếu thấy địa chỉ trang cũ thì quay lại trang cũ

Thực hiện như sau

– Trong hàm download, mã bổ sung để được như sau

npm install
npm install mysql
7

– Trong hàm dangnhap_, mã bổ sung để được như sau

npm install
npm install mysql
8

Bài kiểm tra. Xem trang tải xuống, nếu chưa đăng nhập sẽ được chuyển đến trang dangnhap, đăng nhập xong sẽ được chuyển ngược trở lại trang tải xuống

5. Thoát

Trong routes/thanhvien, tạo route thoat

npm install
npm install mysql
9

Mời bạn thực hiện thêm. chức năng đổi pass, bổ sung thêm cho biểu mẫu đăng ký họ tên, sở thích, thêm nhãn cho các biểu mẫu đăng nhập, đăng ký, hiện văn bản thông báo trong từ đăng nhập nếu tên người dùng nhập không có…