Tải bản đầy đủ (.pdf) (70 trang)

Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.08 MB, 70 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP
NGÀNH: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: CƠNG NGHỆ PHẦN MỀM

ĐỀ TÀI :

XÂY DỰNG WEBSITE
TÌM KIẾM VIỆC LÀM TẠI ĐÀ NẴNG

Giáo viên hướng dẫn: TS. VÕ ĐỨC HỒNG
Sinh viên thực hiện: NGƠ NGỌC KHÁNH
Số thẻ sinh viên: 102150106
Lớp: 15T2

Đà Nẵng, 12/2019


PHIẾU DUYỆT ĐỒ ÁN TỐT NGHIỆP
I. Phần dành cho Sinh viên
1. Họ và tên: NGÔ NGỌC KHÁNH
15T2

2. Mã Sinh viên: 102150106

3. Lớp:

4. Tên đề tài:


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng.
5. Số điện thoại: 0359700903

6. E-mail:

7. Họ và tên GVHD: TS. VÕ ĐỨC HOÀNG
II. Phần dành cho Hội đồng
Nội dung đánh giá

STT

Kết luận

1.

Trình bày báo cáo theo đúng mẫu qui định của Khoa

2.

Khơng có sự sao chép nội dung báo cáo và chương trình
đã có

3.

Biên dịch mã nguồn và chạy được chương trình

4.

Có kịch bản thực hiện với dữ liệu thử nghiệm


5.

Kết quả thực hiện chương trình đúng theo báo cáo

6.

Có sự đóng góp, phát triển của tác giả trong đồ án

Ý kiến khác:
.................................................................................................................. ...................
.................................................................................................................. ...................
Kết luận:

 Đạt yêu cầu

 Phải sửa chữa lại

 Không đạt yêu cầu

Đà Nẵng, ngày 20 tháng 12 năm 2019
Chủ tịch Hội đồng

Cán bộ duyệt kiểm tra

(Ký và ghi họ tên)

(Ký và ghi họ tên)


NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN


......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
Đà Nẵng, ngày 20 tháng 12 năm 2019
Người hướng dẫn
(Ký và ghi họ tên)


TĨM TẮT

Tên đề tài

: Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng


Sinh viên thực hiện

: Ngô Ngọc Khánh

Số thẻ SV

: 102150106

Người hướng dẫn

: TS. Võ Đức Hoàng

Lớp: 15T2

Ngày nay với sự phát triển mạnh mẽ của nền kinh tế hội nhập đã tạo ra cho
chúng ta rất nhiều những cơ hội việc làm khác nhau. Tuy vậy những năm gần đây
nguồn lực lao động ở nước ta rất dồi dào và rất rẻ song tỷ lệ thất nghiệp vẫn còn khá
cao. Vấn để đặt ra là làm thể nào để kết nối người lao động đến được với những cơ
hội việc làm đó. Hiện nay đã và đang tồn tại rất nhiều những hình thức giúp cho
người lao động và nhà tuyển dụng tìm được đến với nhau. Tiêu biểu của những hình
thức này là: các trung tâm tư vấn và giới thiệu việc làm, hội chợ việc làm, các hình
thức quảng cáo, tờ rơi, báo chí.Tuy nhiên những hình thức này ra đời theo chiều
hướng tự phát, thiếu tổ chức nên đã mang lại nhiều bất cập, đôi khi là rào cản giữa
nhà tuyển dụng và các ứng viên tìm việc vì một số lý do sau đây:
 Mất thời gian chờ đợi vì phải thơng qua khâu trung gian là nhà môi
giới.
 Ứng viên và nhà tuyển dụng phải mất kinh phí.
 Sự thiếu tin tưởng ở các hình thức này.
Do vậy trong đợt báo cáo này em chọn đề tài: “Website việc làm Đà Nẵng”
để củng cố kiến thức đã học trong trường, nâng cao kỹ năng làm bài cũng như tiếp

cận trực tiếp với thực tế phục vụ công tác sau này. Website cũng cịn nhằm mục
đích giúp cho các trung tâm và người kinh doanh giảm đi phần nào công việc phải
thực hiện thủ công như trước đây.

iv


ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THƠNG TIN

CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: NGÔ NGỌC KHÁNH

Số thẻ sinh viên: 102150106

Lớp: 15T2

Ngành: Công nghệ phần mềm

Khoa: Công nghệ thông tin

1. Tên đề tài đồ án:
Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng.
Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện
2. Các số liệu và dữ liệu ban đầu: Khơng có
3. Nội dung các phần thuyết minh và tính tốn:

Nội dung của thuyết minh gồm:
Mở đầu: Phần mở đầu của luận văn, giới thiệu về nhu cầu thực tế và lý do thực
hiện đề tài, đồng thời giới thiệu sơ lược về đề tài và mục tiêu phải đạt được.
Chương 1. Cơ sở lý thuyết: trình bày những lý thuyết học được và đã áp dụng
vào hệ thống.
Chương 2. Phân tích và thiết kế: trình bày các hồ sơ phân tích và hồ sơ thiết kế
trong xây dựng hệ thống và luồng hoạt động của hệ thống.
Chương 3. Triển khai và đánh giá kết quả: mô tả cách cài đặt, phận hành hệ
thống và đánh giá kết quả đạt được.
4. Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ): Khơng có
5. Họ tên người hướng dẫn: TS VÕ ĐỨC HOÀNG
6. Ngày giao nhiệm vụ đồ án:

01/09/2019

7. Ngày hoàn thành đồ án:

30/12/2019
Đà Nẵng, ngày 20 tháng 12 năm 2019

Trưởng Bộ môn ……………………..

Người hướng dẫn

v


LỜI CẢM ƠN

Đầu tiên em xin gửi lời cảm ơn chân thành nhất đến tất cả các thầy cô khoa

Công nghệ Thông tin – Trường Đại học Bách khoa, Đại học Đà Nẵng đã tận tình
dạy bảo và dìu dắt em trong suốt năm năm học vừa qua tại trường.
Em xin chân thành cảm ơn Thầy Võ Đức Hoàng, người đã tận tình hướng
dẫn, cũng như đã tạo mọi điều kiện để em có thể hồn thành đồ án tốt nghiệp này.
Nếu như không nhờ những lời hướng dẫn, những đánh giá và chỉ bảo sâu sắc của
thầy thì em nghĩ việc hoàn thành đồ án tốt nghiệp của em sẽ khó khăn hơn rất
nhiều. Một lần nữa em xin chân thành cảm ơn thầy.
Đồ án được thực hiện trong khoảng thời gian 3 tháng. Bước đầu đi vào thực
tế, tìm hiểu lĩnh vực ứng dụng web, với kiến thức cịn hạn chế và nhiều bỡ ngỡ.
Do vậy, khơng thể tránh khỏi những thiếu sót, em rất mong nhận được những ý
kiến đóng góp q báu của q thầy cơ và các bạn để kiến thức trong lĩnh vực này
của em được hồn thiện hơn.
Sau cùng, em xin kính chúc quý thầy cô trong Khoa Công nghệ Thông tin và
Thầy Võ Đức Hoàng thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh
cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau.
Trân trọng!
Đà Nẵng, ngày 20 tháng 12 năm 2019

Ngô Ngọc Khánh

vi


LỜI CAM ĐOAN

Em xin cam đoan :
1. Nội dung trong đồ án này là do tôi thực hiện dưới sự hướng dẫn trực tiếp

của Thầy Võ Đức Hoàng.
2. Các tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả,


tên cơng trình, thời gian, địa điểm cơng bố.
3. Nếu có những sao chép khơng hợp lệ, vi phạm, tơi xin chịu hồn tồn trách

nhiệm.

Sinh viên thực hiện

Ngô Ngọc Khánh

vii


MỤC LỤC

LỜI CẢM ƠN ......................................................................................................... i
LỜI CAM ĐOAN ................................................................................................. iii
MỤC LỤC............................................................................................................. iv
DANH SÁCH HÌNH ẢNH .................................................................................. vii
DANH SÁCH CÁC BẢNG ................................................................................... x
DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT ............................................... xi
TỔNG QUAN ĐỀ TÀI ........................................................................................ 1
1. Tổng quan về đề tài....................................................................................... 1
2. Mục đích và tóm tắt sơ lược về đề tài............................................................ 1
3. Môi trường, công cụ ..................................................................................... 1
4. Bố cục của đồ án........................................................................................... 2
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT...................................................................... 3
1.1. Tổng quan về các ngơn ngữ phía Server ..................................................... 3
1.1.1. Framework Node.js .......................................................................... 3
1.1.2. Framework Express.js....................................................................... 5

1.1.3. Tiêu chuẩn JWT (JSON Web Token) ............................................... 6
1.1.4. Hệ quản trị cơ sở dữ liệu MongoDB ................................................. 8
1.1.5. Mơi trường lập trình Visual Studio Code .......................................... 9
1.2.

Tổng quan về các ngôn ngữ phía Client ..................................................... 9
1.2.1. Thư viện React.js .............................................................................. 9
1.2.2. Thư viện Redux.js............................................................................11

1.3.

Kết chương ..............................................................................................13
viii


CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG .........................................14
2.1.

Giới thiệu .................................................................................................14
2.1.1. Mục đích và đối tượng .....................................................................15
2.1.2. Mơ tả chung.....................................................................................15
2.1.3. Yêu cầu giao diện ............................................................................16
2.1.4. Yêu cầu phi chức năng.....................................................................17

2.2.

Thiết kế hệ thống .....................................................................................17
2.2.1. Các tác nhân trong hệ thống .............................................................17
2.2.2. Các biểu đồ ......................................................................................17
2.2.3. Thiết kế cơ sở dữ liệu ......................................................................32


2.3.

Kết chương ..............................................................................................37

CHƯƠNG 3. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ ...................................38
3.1.

Triển khai hệ thống ..................................................................................38
3.1.1. Môi trường triển khai .......................................................................38
3.1.2. Hệ quản trị cơ sở dữ liệu: MongoDB ...............................................38

3.2.

Kết quả thực nghiệm ................................................................................39

3.3.

Nhận xét và đánh giá kết quả....................................................................54

3.4.

Kết chương ..............................................................................................54

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN............................................................55
1.

Kết quả đạt được ....................................................................................55

2.


Những điều chưa đạt được.....................................................................56

3.

Hướng nghiên cứu và phát triển ............................................................56

TÀI LIỆU THAM KHẢO ....................................................................................57

ix


DANH SÁCH HÌNH ẢNH

Hình 1.1: Mơ tả cách hoạt động của Node............................................................... 4
Hình 1.2: Cấu trúc của ExpressJS ........................................................................... 5
Hình 1.3: Virtual DOM ......................................................................................... 10
Hình 1.4: Cấu trúc của Redux ............................................................................... 13
Hình 2.1: Usecase tổng quát.................................................................................. 18
Hình 2.2: Usecase Quản trị viên(Admin) ............................................................... 19
Hình 2.3: Usecase người tìm việc .......................................................................... 20
Hình 2.4: Usecase nhà tuyển dụng ........................................................................ 21
Hình 2.6: Biểu đồ tuần tự chức năng đăng nhập .................................................... 27
Hình 2.7: Biểu đồ tuần tự chức năng đăng ký ........................................................ 28
Hình 2.8: Biểu đồ tuần tự chức apply cơng việc..................................................... 29
Hình 2.9: Biểu đồ tuần tự chức năng lưu công việc ............................................... 30
Hình 2.10: Biểu đồ tuần tự chức năng follow cơng ty .......................................... 304
Hình 2.14: Cơ sở dữ liệu của hệ thống .................................................................. 33
Hình 3.1: Cài đặt Nodejs và Npm .......................................................................... 38
Hình 3.2: Kiểm node version tra cài đặt bằng lệnh ................................................ 38

Hình 3.3: Cài đặt hệ quản trị cơ sở dữ liệu Mongodb ............................................ 39
Hình 3.4: Giao diện trang đăng nhập .................................................................... 39
Hình 3.5: Giao diện trang đăng ký người tìm việc ................................................. 40
Hình 3.6: Giao diện trang đăng ký nhà tuyển dụng................................................ 41
Hình 3.7: Giao diện trang chủ ............................................................................... 42
Hình 3.8: Giao diện trang liên hệ .......................................................................... 42
Hình 3.9: Giao diện trang giới thiệu...................................................................... 43
x


Hình 3.10: Giao diện trang nhà tuyển dụng ........................................................... 43
Hình 3.11: Giao diện trang việc làm...................................................................... 44
Hình 3.12: Giao diện trang thêm mới cơng việc .................................................... 45
Hình 3.13: Giao diện trang thay đổi mật khẩu ....................................................... 45
Hình 3.14: Giao diện trang chi tiết nhà tuyển dụng ............................................... 46
Hình 3.15: Giao diện dashboard người tìm việc .................................................... 46
Hình 3.16: Giao diện trang danh sách các cơng ty đã follow ................................. 47
Hình 3.17: Giao diện trang danh sách các việc làm đã apply ................................ 47
Hình 3.18: Giao diện trang chi tiết việc làm .......................................................... 48
Hình 3.19: Giao diện trang dashboard cơng ty ...................................................... 48
Hình 3.20: Giao diện trang quản lý việc làm của nhà tuyển dụng .......................... 49
Hình 3.21: Màn hình gửi u cầu tìm việc thành cơng ........................................... 49
Hình 3.22: Màn hình hiển thị danh sách các việc làm đã lưu ................................. 50

xi


DANH SÁCH CÁC BẢNG

Bảng 2.1: Ca sử dụng đăng nhập..................................................................................... 22

Bảng 2.2: Ca sử dụng đăng xuất...................................................................................... 22
Bảng 2.3: Ca sử dụng đăng ký nhà tuyển dụng ................................................................ 23
Bảng 2.4: Ca sử dụng đăng ký người tìm việc .................................................................. 23
Bảng 2.5: Ca sử dụng gửi yêu cầu tìm việc ...................................................................... 24
Bảng 2.6: Ca sử dụng thêm mới một công việc ................................................................ 24
Bảng 2.7: Ca sử dụng quản lý việc làm của nhà tuyển dụng ............................................ 25
Bảng 2.8: Ca sử dụng cập nhật profile ............................................................................ 25
Bảng 2.9: Ca sử dụng lưu việc làm .................................................................................. 26
Bảng 2.10: Bảng user ...................................................................................................... 34
Bảng 2.11: Bảng Jobseeker (Người tìm việc) ................................................................... 34
Bảng 2.12: Bảng Company (Nhà tuyển dụng) .................................................................. 35
Bảng 2.13: Bảng Job (Việc làm) ...................................................................................... 35
Bảng 2.14: Bảng category (danh sách ngành nghề) ......................................................... 36
Bảng 2.15: Bảng applications (bảng CV) ........................................................................ 37
Bảng 3.1: Đánh giá kết quả ............................................................................................. 54

xii


DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT

Từ viết tắt

Diễn giải

JWT

JSON WEB TOKEN

API


Application Programming Interface.

MVC

Model - View - Controller

I/O

Input / Outut

xiii


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng

TỔNG QUAN VỀ ĐỀ TÀI

1. Tổng quan về đề tài
Ngày nay với sự phát triển mạnh mẽ của nền kinh tế hội nhập đã tạo ra cho
chúng ta rất nhiều những cơ hội việc làm khác nhau. Tuy vậy những năm gần đây
nguồn lực lao động ở nước ta rất dồi dào và rất rẻ song tỷ lệ thất nghiệp vẫn còn khá
cao. Vấn để đặt ra là làm thể nào để kết nối người lao động đến được với những cơ hội
việc làm đó. Hiện nay đã và đang tồn tại rất nhiều những hình thức giúp cho người lao
động và nhà tuyển dụng tìm được đến với nhau. Tiêu biểu của những hình thức này là:
các trung tâm tư vấn và giới thiệu việc làm, hội chợ việc làm, các hình thức quảng cáo,
tờ rơi, báo chí.Tuy nhiên những hình thức này ra đời theo chiều hướng tự phát, thiếu tổ
chức nên đã mang lại nhiều bất cập, đôi khi là rào cản giữa nhà tuyển dụng và các ứng
viên tìm việc vì một số lý do sau đây:
+ Mất thời gian chờ đợi vì phải thơng qua khâu trung gian là nhà môi giới.

+ Ứng viên và nhà tuyển dụng phải mất kinh phí.
+ Sự thiếu tin tưởng ở các hình thức này.
2. Mục đích và tóm tắt sơ lược về đề tài
2.1. Mục đích
Website là cầu nối trung gian giữa người lao động và nhà tuyển dụng, qua đó
giúp cho hai bên vừa giảm được chi phí đi lại, vừa giúp đạt hiệu quả trong quá trình
tìm kiếm việc làm cũng như tìm kiếm ứng viên phù hợp với u cầu của cơng ty.
2.2. Phân tích khó khăn của hiện trạng
Mặc dù đây là một nội dung khơng mới và cũng đã có rất nhiều website hỗ trợ
các dịch vụ này. Nhưng cách giải quyết vấn đề thì lại hồn tồn mới bởi hệ thống được
xây dựng trên nền tảng hỗ trợ đa người dùng với phương thức hoạt động của một mơ
hình cổng thơng tin điện tử. Đây chính là điều mà nhiều website với phương thức hoạt
động truyền thống chưa làm được.
2.3. Kịch bản của đề tài
Website là cầu nối trung gian giữa người lao động và nhà tuyển dụng. Nhà
tuyển dụng có thể đăng những công việc mà họ muốn tuyển dụng và người tìm việc sẽ
ứng tuyển vào những cơng việc mà phù hợp với họ.

SVTH: Ngơ Ngọc Khánh

GVHD: TS Võ Đưc Hồng

1 1


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng

3. Môi trường, công cụ
Môi trường triển khai: Website
Hệ điều hành: Được cấu hình trên hệ điều hành Linux.

Phạm vi sử dụng: Có thể sử dụng trên tất cả trình duyệt
Sản phẩm được viết theo mơ hình Client-Server
Ngơn ngữ lập trình: React.js, Node.js
Hệ quản trị cơ sở dữ liệu: MongoDB
4. Bố cục của đồ án
Đồ án bao gồm các nội dung sau:
- Mở đầu
- Chương 1: Cơ sở lý thuyết
1.1.

Tổng quan về các ngơn ngữ phía Server

1.2.

Tổng quan về các ngơn ngữ phía Client

- Chương 2: Phân tích thiết kế hệ thống
2.1.

Giới thiệu

2.2.

Thiết kế hệ thống

2.3.

Kết chương

- Chương 3: Triển khai và đánh gia kết quả

3.1.

Triển khai hệ thống

3.2.

Kết quả thực nghiệm

3.3.

Nhận xét và đánh giá kết quả

3.4.

Kết chương

- Kết luận và hướng phát triển.
Kết quả đạt được
Những điều chưa đạt được
Hướng nghiên cứu và phát triển

SVTH: Ngô Ngọc Khánh

GVHD: TS Võ Đưc Hoàng

2 2


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng


CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về các ngôn ngữ phía Server
1.1.1. Framework Node.js
1.1.1.1. Định nghĩa Node.js
Node.js là một JavaScript runtime được build dựa trên Chrome’s V8 JavaScript
engine. Node.js sử dụng mơ hình event-driven, non-blocking I/O khiến nó trở nên nhẹ
và hiệu quả.
V8 engine là một JavaScript engine mã nguồn mở chạy trên các trình duyệt
Chrome, Opera và Vivaldi. Nó được thiết kế tập trung vào hiệu năng và chịu trách
nhiệm cho việc dịch mã JavaScript sang mã máy để máy tính có thể hiểu và chạy
được. Nhưng bạn cũng nên tránh nhầm lẫn rằng Node chạy trên trình duyệt. Cha đẻ
của Node dựa trên V8 engine, cải tiến một số tính năng chẳng hạn file system API, thư
viện HTTP và một số phương thức liên quan đến hệ điều hành. Điều đó có nghĩa là
Node.js là một chương trình giúp ta có thể chạy code JavaScript trên máy tính, nói
cách khác nó là một JavaScript runtime.
1.1.1.2. Mơ hình hoạt động của Node.js
Để cho dễ hiểu, khi bạn connect đến một server truyền thống, chẳng hạn
Apache, nó sẽ sinh ra một thread mới để xử lý request. Ở các ngơn ngữ như PHP hay
Ruby, mỗi một phép tốn I/O (ví dụ truy cập database) sẽ chặn execution trên code của
bạn cho đến khi phép tốn đó hồn thành. Nói cách khác, server sẽ đợi cho đến khi
database được duyệt xong mới xử lý kết quả. Nếu có những request mới, server lại tiếp
tục sinh những thread mới để xử lý chúng. Điều này dẫn đến nguy cơ kém hiệu quả,
khi một lượng lớn thread được tạo ra sẽ khiến cho hệ thống trở nên chậm chạp, tệ hơn
nữa có thể khiến site bị sập. Cách thông thường để giải quyết tình trạng này là bổ sung
thêm server.
Node.js, mặt khác là single-threaded. Nó cũng thuộc dạng event-driven hay nói
cách khác tất cả những gì xảy ra trong Node là để phản hồi lại với một sự kiện. Ví dụ,
khi một request được gửi đến, server bắt đầu xử lý nó. Nếu nó gặp phải phép tốn I/O,
thay vì đợi cho phép tốn này kết thúc, nó sẽ đăng ký một callback trước khi tiếp tục
xử lý event tiếp theo. Khi phép toán I/O kết thúc, server sẽ chạy callback và tiếp tục

làm việc trên request ban đầu. Ở tầng bên dưới, Node sử dụng thư viện libuv để thực
hiện hoạt động asynchronous (non-blocking) này. Mơ hình hoạt động này của Node
SVTH: Ngơ Ngọc Khánh

GVHD: TS Võ Đưc Hồng

3 3


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng

giúp server có thể xử lý một lượng lớn kết nối đến đồng thời. Quan điểm truyền thống
để scale một Node app là clone nó và để instance được clone chia sẻ cơng việc.
Node.js thậm chí có module buit-in sẵn để giúp bạn thực hiện chiến lược clone này
trên một server duy nhất.
1.1.1.3. Hình dưới đây mơ tả cách hoạt động của Node.

Hình 1.1: Mơ tả cách hoạt động của Node
1.1.1.4. Thế mạnh của Node.js?
Bên cạnh tốc độ và khả năng mở rộng, việc dùng JavaScript trên server và trình
duyệt giúp cho bạn đỡ phải chuyển đổi giữa các ngôn ngữ. Bạn có thể làm bất cứ thứ
gì với duy nhất một ngơn ngữ.
Một điểm mạnh nữa của Node đó là nó cực thích hợp với JSON. JSON được
coi là lý tưởng khi được sử dụng bởi một chương trình JavaScript. Khi làm việc với
Node, dữ liệu có thể chuyển qua các tầng layer mà không cần phải reformat.
Cuối cùng, JavaScript thực sự quá phổ biến, điều này giúp cho việc chuyển
sang phát triển Node app dễ dàng hơn so với những ngơn ngữ phía server khác.

SVTH: Ngơ Ngọc Khánh


GVHD: TS Võ Đưc Hoàng

4 4


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng

1.1.2. Framework Express.js
1.1.2.1. ExpressJS là gì

Express js là một Framework nhỏ, nhưng linh hoạt được xây dựng trên nền tảng
của Nodejs. Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile
Về các package hỗ trợ: Expressjs có vô số các package hỗ trợ nên các bạn
không phải lo lắng khi làm việc với Framework này.
Về performance: Express cung cấp thêm về các tính năng (feature) để dev lập
trình tốt hơn. Chứ khơng làm giảm tốc độ của NodeJS.
Và hơn hết, các Framework nổi tiếng của NodeJS hiện nay đều sử dụng
ExpressJS như một core function, chẳng hạn: SailsJS, MEAN,....
1.1.2.2. Cấu trúc của ExpressJS

Hình 1.2: Cấu trúc của ExpressJS

SVTH: Ngơ Ngọc Khánh

GVHD: TS Võ Đưc Hồng

5 5


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng


1.1.3. Tiêu chuẩn JWT (JSON Web Token)
1.1.3.1. JSON Web Token là gì?
JSON Web Mã (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ
gọn và khép kín để truyền một cách an tồn thơng tin giữa các bên dưới dạng đối
tượng JSON. Thơng tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ
ký số. JWTs có thể được ký bằng một thuật tốn bí mật (với thuật tốn HMAC) hoặc
một public / private key sử dụng mã hố RSA.
Một ví dụ về JWT Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxM
zEsImlzcyI6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y2ExZTQxZGY3
YmM5MGM4YWI2ZDBmNjIwN2Q0OTFjZjZkYWQ3YzY2ZWE3OTdiNDYxNGI3MTkyMmU
5IiwiaWF0IjoxMzg2ODk4OTUxfQ.uKqU9dTB6gKwG6jQCuXYAiMNdfNRw98Hw_I
WuA5MaMo
Thoạt trông phức tạp là thế nhưng nếu hiểu, cấu trúc của một JWT chỉ đơn giản
như sau:
<base64-encoded-header>.
payload>.
encoded signature>
Nói một cách khác, JWT là sự kết hợp (bởi dấu .) một Object Header dưới định
dạng JSON được encode base64, một payload object dưới định dạng JSOn được
encode base64 và một Signature cho URI cũng được mã hóa base64 nốt.
1.1.3.2. Giải thích thêm về 3 thành phần của JWT
Header
Header bao gồm hai phần chính: loại token (mặc định là JWT - Thông tin này
cho biết đây là một Token JWT) và thuật tốn đã dùng để mã hóa (HMAC SHA256 HS256 hoặc RSA).
{
"alg": "HS256",

"typ": "JWT"
}
SVTH: Ngô Ngọc Khánh

GVHD: TS Võ Đưc Hoàng

6 6


Xây dựng website Tìm kiếm Việc làm tại Đà Nẵng

Payload
Payload chứa các claims. Claims là một các biểu thức về một thực thể (chẳng
hạn user) và một số metadata phụ trợ. Có 3 loại claims thường gặp trong Payload:
reserved, public và private claims.
Reserved claims
Đây là một số metadata được định nghĩa trước, trong đó một số metadata là bắt
buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy đủ thông tin: iss (issuer), iat
(issued-at time) exp (expiration time), sub (subject), aud (audience), jti (Unique
Identifier cho JWT, Can be used to prevent the JWT from being replayed. This is
helpful for a one time use token.)
Public Claims
Claims được cộng đồng công nhận và sử dụng rộng rãi.
Private Claims
Claims tự định nghĩa (không được trùng với Reserved Claims và Public
Claims), được tạo ra để chia sẻ thông tin giữa 2 parties đã thỏa thuận và thống nhất
trước đó.
Signature
Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header, payload
cùng với một chuỗi bí mật theo nguyên tắc sau:

HMACSHA256 (
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
Do bản thân Signature đã bao gồm cả header và payload nên Signature có thể
dùng để kiểm tra tính tồn vẹn của dữ liệu khi truyền tải.

SVTH: Ngơ Ngọc Khánh

GVHD: TS Võ Đưc Hồng

7 7



×