1
00:00:03,710 --> 00:00:10,135
Đây là phần thứ hai của Tập thể dục Express Sessions.

2
00:00:10,135 --> 00:00:12,320
Chúng tôi đã hoàn thành phần đầu tiên trước đó,

3
00:00:12,320 --> 00:00:15,310
nơi chúng tôi thêm hỗ trợ cho Express Sessions,

4
00:00:15,310 --> 00:00:20,340
và sử dụng Express Sessions như một cách để theo dõi người dùng ở phía máy chủ,

5
00:00:20,340 --> 00:00:24,160
và nhận ra các yêu cầu đến từ người dùng.

6
00:00:24,160 --> 00:00:30,930
Trong bài tập này, chúng tôi không tập trung quá nhiều vào Express Sessions,

7
00:00:30,930 --> 00:00:36,605
nhưng chúng tôi sẽ xem xét một cách mở rộng máy chủ REST API để hỗ trợ

8
00:00:36,605 --> 00:00:42,435
một mô hình mới để đăng ký và xác thực người dùng.

9
00:00:42,435 --> 00:00:48,635
Vì vậy, chúng tôi sẽ giới thiệu một mô hình người dùng mới và giản đồ vào ứng dụng của chúng tôi.

10
00:00:48,635 --> 00:00:52,295
Chúng tôi đã có tuyến đường người dùng dấu gạch chéo mà

11
00:00:52,295 --> 00:00:57,290
máy phát nhanh đã gắn bộ định tuyến của người dùng.

12
00:00:57,290 --> 00:01:00,035
Vì vậy, chúng tôi sẽ tận dụng điều đó và sau đó cập nhật điều đó

13
00:01:00,035 --> 00:01:03,205
để hỗ trợ đăng ký người dùng mới,

14
00:01:03,205 --> 00:01:05,390
xác thực một người dùng hiện tại,

15
00:01:05,390 --> 00:01:11,695
và cũng đăng xuất một người dùng từ trang web máy chủ của chúng tôi.

16
00:01:11,695 --> 00:01:17,915
Vì vậy, chúng ta sẽ xem xét Express Sessions như một cách để theo dõi người dùng một khi người dùng đăng nhập,

17
00:01:17,915 --> 00:01:19,820
và sau đó khi người dùng đăng xuất,

18
00:01:19,820 --> 00:01:22,680
phiên sẽ bị xóa khỏi hệ thống.

19
00:01:22,680 --> 00:01:27,480
Vì vậy, làm thế nào để chúng ta đi về làm phần mở rộng này trong bài tập này?

20
00:01:27,480 --> 00:01:29,700
Chúng ta hãy đi và tìm hiểu.

21
00:01:29,800 --> 00:01:35,485
Tiếp tục với máy chủ REST API nhanh của chúng tôi,

22
00:01:35,485 --> 00:01:41,835
bây giờ chúng ta hãy đi vào các mô hình và thêm một tập tin mới có tên user.js.

23
00:01:41,835 --> 00:01:46,440
Đây là tập tin mà chúng tôi sẽ tạo ra lược đồ người dùng và mô hình.

24
00:01:46,440 --> 00:01:51,405
Chúng tôi sẽ tạo một lược đồ người dùng đơn giản theo dõi tên người dùng và mật khẩu,

25
00:01:51,405 --> 00:01:55,520
và cũng là một lá cờ được đặt để chỉ ra

26
00:01:55,520 --> 00:01:59,540
người dùng là người quản trị hay người dùng bình thường.

27
00:01:59,540 --> 00:02:03,660
Vì vậy, đây là một cách để phân biệt giữa các loại người dùng khác nhau.

28
00:02:03,660 --> 00:02:07,210
Vì vậy, trong tập tin này,

29
00:02:07,210 --> 00:02:16,510
trước tiên chúng ta hãy yêu cầu Mongoose bởi vì chúng ta đang tạo ra một lược đồ Mongoose,

30
00:02:16,510 --> 00:02:26,710
và sau đó chúng ta sẽ tạo ra một lược đồ tên Mongoose schema,

31
00:02:26,710 --> 00:02:29,720
và sau đó chúng ta sẽ nói var user.

32
00:02:29,720 --> 00:02:32,870
Vì vậy, đây là lược đồ người dùng mà chúng ta sẽ tạo ra,

33
00:02:32,870 --> 00:02:38,150
và chúng ta sẽ nói lược đồ người dùng mới.

34
00:02:38,150 --> 00:02:42,740
Các giản đồ người dùng sẽ được định nghĩa như tôi vừa đề cập,

35
00:02:42,740 --> 00:02:47,705
với ba lĩnh vực ở đây được gọi là tên người dùng

36
00:02:47,705 --> 00:02:55,755
mà rõ ràng sẽ là của chuỗi loại,

37
00:02:55,755 --> 00:02:59,290
và đây là một lĩnh vực bắt buộc,

38
00:02:59,290 --> 00:03:03,975
và đây là một lĩnh vực duy nhất.

39
00:03:03,975 --> 00:03:07,580
Bạn không muốn hai người dùng có cùng tên người dùng trong hệ thống của bạn,

40
00:03:07,580 --> 00:03:12,810
vì vậy chúng tôi tạo tên người dùng và sau đó trường thứ hai là trường mật khẩu.

41
00:03:12,810 --> 00:03:15,259
Bây giờ, tất nhiên, bạn có thể mở rộng

42
00:03:15,259 --> 00:03:19,820
lược đồ người dùng này để cho phép người dùng theo dõi toàn bộ hồ sơ của họ,

43
00:03:19,820 --> 00:03:23,985
nhưng chúng tôi sẽ làm điều đó trong một trong những bài tập sau này, cho thời điểm này,

44
00:03:23,985 --> 00:03:30,604
một người dùng được công nhận trong hệ thống bằng cách đơn giản là tên người dùng và mật khẩu.

45
00:03:30,604 --> 00:03:36,290
Vì vậy, mật khẩu là của chuỗi loại và sau đó là bắt buộc.

46
00:03:37,300 --> 00:03:44,320
Trường thứ ba mà tôi sẽ sử dụng được gọi là quản trị viên.

47
00:03:44,320 --> 00:03:48,025
Vì vậy, quản trị viên là loại Boolean,

48
00:03:48,025 --> 00:03:58,270
và chúng tôi sẽ nói mặc định false.

49
00:03:58,270 --> 00:04:02,905
Vì vậy, theo mặc định khi một người dùng được tạo ra,

50
00:04:02,905 --> 00:04:04,830
một người dùng mới được tạo

51
00:04:04,830 --> 00:04:06,855
ra, cờ quản trị sẽ được đặt thành false.

52
00:04:06,855 --> 00:04:09,925
Bạn có thể rõ ràng thiết lập nó thành true từ bên

53
00:04:09,925 --> 00:04:14,605
trong mã của bạn để đánh dấu một người dùng là một người dùng quản trị.

54
00:04:14,605 --> 00:04:18,460
Có lẽ bạn có thể cung cấp các đặc quyền bổ sung cho người dùng quản trị,

55
00:04:18,460 --> 00:04:21,230
hoặc có thể cho phép người dùng quản trị thực hiện các

56
00:04:21,230 --> 00:04:24,810
thao tác nhất định mà người dùng bình thường sẽ không làm như vậy.

57
00:04:24,810 --> 00:04:27,760
Chúng ta sẽ xem xét điều đó trong một trong những bài tập sau này,

58
00:04:27,760 --> 00:04:31,500
cho thời điểm này, đây là lược đồ người dùng mà chúng ta đã tạo ra, chúng ta

59
00:04:31,500 --> 00:04:38,150
hãy tạo ra một mô-đun ra khỏi điều này và xuất từ

60
00:04:38,150 --> 00:04:47,075
mô-đun này một mô hình Mongoose của người dùng tên.

61
00:04:47,075 --> 00:04:51,115
Vì vậy, đây là mô hình Mongoose và giản đồ là lược

62
00:04:51,115 --> 00:04:55,840
đồ người dùng mà chúng tôi vừa xác định trước đó một chút.

63
00:04:55,840 --> 00:05:00,615
Vì vậy, đây là cách chúng tôi xác định lược đồ người dùng của chúng tôi.

64
00:05:00,615 --> 00:05:03,770
Vì vậy, bây giờ chúng ta đã xác định lược đồ người dùng

65
00:05:03,770 --> 00:05:08,660
của chúng tôi, chúng ta hãy đi vào bộ định tuyến đã được thiết lập

66
00:05:08,660 --> 00:05:15,610
bởi bộ tạo nhanh khi nó tạo ra ứng dụng express này.

67
00:05:15,610 --> 00:05:17,775
Vì vậy, nếu bạn đi vào thư mục route,

68
00:05:17,775 --> 00:05:20,890
bạn sẽ thấy tệp này được gọi là users.js.

69
00:05:20,890 --> 00:05:26,780
Vì vậy, tệp users.js này sẽ được mở rộng để tạo bộ định tuyến.

70
00:05:26,780 --> 00:05:36,720
Vì vậy, ngay có những gì tôi sẽ làm là nhập khẩu cơ thể phân tích cú pháp,

71
00:05:41,510 --> 00:05:46,395
và sau đó họ sẽ khai báo router nhanh,

72
00:05:46,395 --> 00:05:50,145
và sau đó chúng ta sẽ nói cũng nhập khẩu

73
00:05:50,145 --> 00:05:57,100
giản đồ người dùng và

74
00:05:57,100 --> 00:06:03,420
mô hình từ người dùng mô hình,

75
00:06:03,950 --> 00:06:09,220
và sau đó cho router nhanh chúng ta sẽ nói, bộ định

76
00:06:09,220 --> 00:06:13,380
tuyến sử dụng cơ thể phân tích cú pháp.

77
00:06:16,190 --> 00:06:20,690
Vì vậy, bây giờ mà chúng tôi đã tuyên bố phân tích cú pháp cơ thể trong đó,

78
00:06:20,690 --> 00:06:23,650
chúng tôi sẽ để lại phần này như vậy,

79
00:06:23,650 --> 00:06:28,040
sau đó chúng tôi sẽ sửa đổi này để cho phép các quản trị viên

80
00:06:28,040 --> 00:06:30,470
để có thể truy xuất

81
00:06:30,470 --> 00:06:33,750
tất cả các người dùng được đăng ký trong hệ thống nhưng cho thời điểm này,

82
00:06:33,750 --> 00:06:37,705
chúng tôi sẽ rời khỏi tuyến đường đó như vậy.

83
00:06:37,705 --> 00:06:40,500
Chúng tôi sẽ thêm vào một vài tuyến đường nữa ở đây,

84
00:06:40,500 --> 00:06:42,965
vì vậy chúng tôi sẽ nói, “Bài đăng bộ định tuyến”.

85
00:06:42,965 --> 00:06:49,970
Vì vậy, chúng tôi sẽ hỗ trợ hoạt động sau trên một tuyến đường được gọi là đăng

86
00:06:49,970 --> 00:06:55,790
ký và như bạn mong đợi, tuyến đường đăng ký này sẽ cho phép người dùng đăng ký trên hệ thống,

87
00:06:55,790 --> 00:07:04,920
vì vậy điều này sẽ hỗ trợ đăng ký của người dùng.

88
00:07:04,920 --> 00:07:08,355
Vì vậy, chúng ta sẽ nói, “Rec, res, tiếp theo.”

89
00:07:08,355 --> 00:07:16,090
Và vì vậy đây sẽ là đăng ký đăng ký bộ định tuyến,

90
00:07:16,590 --> 00:07:23,410
các phương pháp còn lại sẽ không được phép trên phần cuối đăng ký.

91
00:07:23,410 --> 00:07:25,865
Vì vậy, để truy cập điều

92
00:07:25,865 --> 00:07:31,420
này, kể từ khi router người dùng này được gắn trên người dùng gạch

93
00:07:31,420 --> 00:07:35,645
chéo, chúng tôi sẽ chỉ định điểm cuối này là người dùng gạch chéo slash đăng ký,

94
00:07:35,645 --> 00:07:41,765
và đây là điểm cuối sẽ được sử dụng để đăng ký người dùng mới trong hệ thống.

95
00:07:41,765 --> 00:07:45,080
Vì vậy, điều đầu tiên mà chúng tôi sẽ làm là sử dụng

96
00:07:45,080 --> 00:07:53,300
phương pháp người dùng và kỳ vọng là đối với một người dùng để đăng ký, tên người

97
00:07:53,300 --> 00:07:58,145
dùng và mật khẩu sẽ được cung cấp dưới dạng một chuỗi JSON

98
00:07:58,145 --> 00:08:03,185
bên trong cơ thể của yêu cầu bài đăng đến.

99
00:08:03,185 --> 00:08:05,160
Vì vậy, từ cơ thể,

100
00:08:05,160 --> 00:08:09,200
vì cơ thể đã được phân tích cú pháp cơ thể, do đó,

101
00:08:09,200 --> 00:08:10,370
từ cơ thể,

102
00:08:10,370 --> 00:08:13,920
trước tiên sẽ kiểm tra để đảm bảo rằng

103
00:08:13,920 --> 00:08:22,130
người dùng có tên người dùng đó không tồn tại trong hệ thống.

104
00:08:22,130 --> 00:08:24,380
Nếu người dùng có tên người dùng đó tồn tại,

105
00:08:24,380 --> 00:08:26,900
thì bạn đang cố gắng đăng ký một người dùng trùng lặp

106
00:08:26,900 --> 00:08:29,715
và điều đó không nên được phép trong hệ thống.

107
00:08:29,715 --> 00:08:37,340
Vì vậy, chúng tôi sẽ nói, “Người dùng tìm thấy một”, và sau đó chúng tôi sẽ cố gắng tìm xem

108
00:08:37,340 --> 00:08:41,090
có một người dùng với tên người dùng đã được

109
00:08:41,090 --> 00:08:45,405
chọn bởi khách hàng đang cố gắng đăng ký một người dùng mới hay không.

110
00:08:45,405 --> 00:08:47,020
Nếu người dùng đã tồn tại,

111
00:08:47,020 --> 00:08:51,850
thì rõ ràng bạn sẽ không cho phép người dùng mới đăng ký với cùng một tên người dùng.

112
00:08:51,850 --> 00:08:55,665
Vì vậy, chúng tôi sẽ nói, “Sau đó người dùng.”

113
00:08:55,665 --> 00:09:03,295
Vì vậy, điều này sẽ trả lại người dùng ở đây và bên trong trường người dùng này,

114
00:09:03,295 --> 00:09:09,080
sau đó chúng tôi sẽ kiểm tra thực tế cho dù người dùng đã tồn tại,

115
00:09:09,080 --> 00:09:12,350
và sau đó cho phép tôi bắt lỗi ở đây.

116
00:09:12,350 --> 00:09:19,140
Vì vậy, chúng tôi sẽ nói, “Bắt lỗi”, và sau đó, “lỗi tiếp theo.”

117
00:09:19,140 --> 00:09:26,160
Vì vậy, chúng tôi sẽ chỉ cần truyền cho trình xử lý lỗi ở đó.

118
00:09:26,160 --> 00:09:33,345
Vì vậy, nếu tìm kiếm này cho người dùng trả về trường người dùng,

119
00:09:33,345 --> 00:09:40,460
nếu người dùng không bằng null.

120
00:09:40,460 --> 00:09:45,170
Vì vậy, nếu người dùng được trả về bởi tìm kiếm này

121
00:09:45,170 --> 00:09:50,510
không phải là null thì điều đó có nghĩa là người dùng có tên người dùng đã cho đã tồn tại,

122
00:09:50,510 --> 00:09:53,420
vì vậy bạn không nên cho phép đăng ký trùng lặp.

123
00:09:53,420 --> 00:09:58,765
Vì vậy, chúng tôi sẽ nói, “Var err lỗi mới.”

124
00:09:58,765 --> 00:10:09,075
Và chúng ta sẽ nói, “Người dùng req. body username.”

125
00:10:09,075 --> 00:10:15,410
Đã tồn tại rồi. Vì vậy, về cơ bản,

126
00:10:15,410 --> 00:10:20,565
bạn đang ngăn chặn một người dùng trùng lặp đăng ký và sau đó chúng tôi sẽ nói

127
00:10:20,565 --> 00:10:29,280
err.status 403 so với bị cấm và sau đó thoát ra,

128
00:10:29,280 --> 00:10:33,735
gọi trình xử lý lỗi, tiếp theo err.

129
00:10:33,735 --> 00:10:36,880
Nếu không, điều này có nghĩa là người dùng không tồn tại

130
00:10:36,880 --> 00:10:39,670
vì vậy bạn nên cho phép người dùng được đăng xuất.

131
00:10:39,670 --> 00:10:41,950
Vì vậy, trong phần khác,

132
00:10:41,950 --> 00:10:46,150
chúng ta sẽ nói, trả về user.create ().

133
00:10:47,200 --> 00:10:56,165
Chúng tôi sẽ tạo một người dùng mới với tên người dùng được thiết lập để req.body.username,

134
00:10:56,165 --> 00:11:02,555
và sau đó cho phép tôi đặt điều này trong dòng tiếp theo để nó rõ ràng hơn với bạn,

135
00:11:02,555 --> 00:11:09,620
và chúng tôi sẽ nói mật khẩu: req.body.password.

136
00:11:09,620 --> 00:11:14,550
Bây giờ, chúng ta đã biết rằng cờ admin mặc định sẽ được đặt thành false,

137
00:11:14,550 --> 00:11:17,700
vì vậy chúng tôi sẽ để nó như vậy,

138
00:11:17,730 --> 00:11:28,175
và điều này sẽ cho phép người dùng mới của chúng tôi được đăng ký và khi người dùng mới được đăng ký,

139
00:11:28,175 --> 00:11:37,880
điều này sẽ trả lại một lời hứa và bên trong “sau đó” chúng tôi sẽ xử lý lời hứa này ở đây.

140
00:11:37,880 --> 00:11:41,460
Vì vậy, điều này sẽ trả lại lời hứa từ

141
00:11:41,460 --> 00:11:45,625
điều này “sau đó” và sau đó chúng tôi sẽ xử lý nó trong tiếp theo “sau đó” ở đây.

142
00:11:45,625 --> 00:12:02,120
Sẽ nói sau đó, res.StatusCode là 200,

143
00:12:02,120 --> 00:12:10,640
res.Setheader và chúng tôi sẽ nói nội dung loại ứng dụng/json

144
00:12:19,830 --> 00:12:38,000
và chúng tôi sẽ nói, res.json (trạng thái: Đăng ký thành công),

145
00:12:42,960 --> 00:12:45,760
và nếu bạn muốn,

146
00:12:45,760 --> 00:12:49,659
chúng ta có thể tải người dùng vào

147
00:12:49,659 --> 00:12:58,270
thông điệp trả lời này ở đây như là một tài sản trong json.

148
00:13:02,790 --> 00:13:06,890
Sẽ nói Đăng ký thành công.

149
00:13:07,830 --> 00:13:14,950
Sau đó, nếu có một lỗi trong

150
00:13:14,950 --> 00:13:22,790
thao tác này sẽ nói “tiếp theo err”.

151
00:13:22,790 --> 00:13:25,200
Vì vậy, điều đó sẽ xử lý các lỗi.

152
00:13:25,440 --> 00:13:29,220
Nếu lời hứa không giải quyết thành công,

153
00:13:29,220 --> 00:13:32,020
thì sẽ được xử lý bởi điều đó. Vậy là vậy.

154
00:13:32,020 --> 00:13:36,150
Vì vậy, ở đây, chúng tôi có một cách để người dùng đăng ký.

155
00:13:36,150 --> 00:13:38,280
Vì vậy, để người dùng đăng ký,

156
00:13:38,280 --> 00:13:46,570
người dùng sẽ thực hiện một bài đăng trên /users/đăng ký và trong nội dung của tin nhắn,

157
00:13:46,570 --> 00:13:51,810
khách hàng sẽ bao gồm một chuỗi json

158
00:13:51,810 --> 00:13:57,760
với tên người dùng và mật khẩu thuộc tính trong chuỗi json đó.

159
00:13:57,760 --> 00:14:01,200
Đó là cách bạn đăng ký một người dùng mới.

160
00:14:01,200 --> 00:14:06,135
Bây giờ, chúng ta hãy xem làm thế nào chúng ta sẽ đăng nhập vào người dùng.

161
00:14:06,135 --> 00:14:14,605
Bây giờ, chúng tôi vẫn sẽ sử dụng phiên Express mà chúng tôi đã thực hiện trước đó để theo dõi người dùng.

162
00:14:14,605 --> 00:14:24,270
Vì vậy, để đăng nhập một người dùng sẽ nói “router.post” trên điểm kết thúc/đăng nhập.

163
00:14:24,820 --> 00:14:29,370
Vì vậy, trên điểm cuối /login,

164
00:14:32,280 --> 00:14:35,800
chúng tôi sẽ làm một router.post.

165
00:14:35,800 --> 00:14:42,460
Chúng tôi rõ ràng sẽ thay vì nói chức năng,

166
00:14:42,460 --> 00:14:48,575
bạn có thể sử dụng các chức năng mũi tên ở đây cho router.post,

167
00:14:48,575 --> 00:14:50,780
Tôi sẽ làm điều tương tự ở đây.

168
00:14:50,780 --> 00:14:53,930
Tôi đã nhận được thích các chức năng mũi tên.

169
00:14:53,930 --> 00:14:57,125
Vì vậy, chúng tôi sẽ làm một chức năng mũi tên ở đây.

170
00:14:57,125 --> 00:15:00,080
Vì vậy, đối với đăng nhập, đăng nhập tiến hành như thế nào?

171
00:15:00,080 --> 00:15:01,880
Vì vậy, đối với đăng nhập,

172
00:15:01,880 --> 00:15:10,850
những gì chúng tôi sẽ làm là chúng tôi sẽ đi đến các tập tin app.js và sau đó bên trong auth này,

173
00:15:11,760 --> 00:15:17,050
chúng tôi đã làm điều đó đăng ký cho người dùng ở đó.

174
00:15:17,050 --> 00:15:20,315
Vì vậy, điều tôi sẽ làm là tôi sẽ sao chép

175
00:15:20,315 --> 00:15:25,730
toàn bộ điều này bởi vì tôi sẽ không làm tất cả điều này.

176
00:15:25,730 --> 00:15:32,970
Vì vậy, thay vì để tôi sao chép tất cả các cách từ thời điểm này trở đi lên đến req.session.user.

177
00:15:32,970 --> 00:15:36,925
Vì vậy, nếu một phần của req.session.user tôi sẽ sao chép,

178
00:15:36,925 --> 00:15:44,120
và sau đó đến users.js và đăng nhập.

179
00:15:44,120 --> 00:15:47,305
Đó là chính xác làm thế nào tôi sẽ làm xác thực.

180
00:15:47,305 --> 00:15:51,025
Vì vậy, chúng tôi sẽ nói nếu không req.session.user.

181
00:15:51,025 --> 00:15:55,965
Vì vậy, điều đó có nghĩa là người dùng chưa xác thực chính mình.

182
00:15:55,965 --> 00:15:59,420
Sau đó, bạn mong đợi xác thực cơ bản như

183
00:15:59,420 --> 00:16:02,780
là một cơ chế cho người sử dụng để xác thực.

184
00:16:02,780 --> 00:16:07,890
Vì vậy, chúng tôi sẽ nói var AuthHeader nếu! AuthHeader sau đó chúng tôi sẽ nâng cao lỗi,

185
00:16:07,890 --> 00:16:17,760
nếu không chúng tôi sẽ lấy tên người dùng và mật khẩu từ tiêu đề.

186
00:16:17,760 --> 00:16:25,235
Bây giờ, ở đây chúng tôi đã làm nếu tên người dùng bằng admin và mật khẩu bằng mật khẩu.

187
00:16:25,235 --> 00:16:30,535
Nhưng bây giờ, những gì chúng ta sẽ làm là chúng ta sẽ tìm kiếm trong

188
00:16:30,535 --> 00:16:36,695
cơ sở dữ liệu để xem liệu người dùng cụ thể đó tồn tại.

189
00:16:36,695 --> 00:16:39,595
Vì vậy, thay vì làm điều này ở đây,

190
00:16:39,595 --> 00:16:42,995
thay vì làm điều này nếu tên người dùng và mật khẩu,

191
00:16:42,995 --> 00:16:48,380
chúng tôi sẽ nói, user.findone

192
00:16:49,650 --> 00:16:56,020
và chúng tôi sẽ nói tên người dùng là tên người dùng.

193
00:16:56,020 --> 00:17:00,730
Vì vậy, tài sản này là bằng với tên người dùng này mà chúng tôi vừa lấy ra

194
00:17:00,730 --> 00:17:06,820
và sau đó chúng tôi sẽ nói sau đó người dùng.

195
00:17:09,770 --> 00:17:18,600
Vì vậy, bên trong này “sau đó”.

196
00:17:18,600 --> 00:17:23,110
Vì vậy, tôi sẽ di chuyển mã này bên trong này “sau đó” bởi vì

197
00:17:23,110 --> 00:17:28,395
bây giờ những gì tôi sẽ kiểm tra bây giờ rằng tôi đã lấy ra người dùng,

198
00:17:28,395 --> 00:17:35,625
tôi cần phải kiểm tra để đảm bảo rằng người dùng này là chính xác những gì tôi đang tìm kiếm.

199
00:17:35,625 --> 00:17:37,405
Vì vậy, tại thời điểm này,

200
00:17:37,405 --> 00:17:42,485
chúng tôi sẽ kiểm tra đầu tiên để đảm bảo rằng người dùng không phải là null.

201
00:17:42,485 --> 00:17:49,915
Vì vậy, chúng tôi sẽ nói nếu người dùng là null.

202
00:17:49,915 --> 00:17:51,390
Vì vậy, nếu người dùng là null,

203
00:17:51,390 --> 00:17:55,930
vì vậy điều đó có nghĩa là chúng tôi không thể tìm thấy một người dùng với tên người dùng cụ thể đó.

204
00:17:55,930 --> 00:17:59,860
Vì vậy, bạn sẽ phải trả lại một lỗi ở đây.

205
00:17:59,860 --> 00:18:04,540
Vì vậy, hãy để tôi chỉ cần sao chép phần này và sau đó dán nó vào

206
00:18:04,540 --> 00:18:09,840
đây và sau đó chúng tôi sẽ trở lại nói var lỗi mới

207
00:18:09,840 --> 00:18:14,575
và chúng tôi sẽ nói

208
00:18:14,575 --> 00:18:23,120
tên người dùng

209
00:18:23,580 --> 00:18:28,750
không gian không tồn tại.

210
00:18:28,750 --> 00:18:30,600
Vì vậy, trong trường hợp

211
00:18:30,600 --> 00:18:35,230
này, người dùng này không tồn tại vì vậy tôi chỉ cần loại bỏ phần này và

212
00:18:35,230 --> 00:18:41,840
sau đó tình trạng lỗi tương ứng sẽ là 403 ở đây.

213
00:18:42,450 --> 00:18:44,960
Vì vậy, đây là phần đầu tiên.

214
00:18:44,960 --> 00:18:55,000
Nếu người dùng là null thì chúng ta rõ ràng sẽ nói rằng người dùng không tồn tại.

215
00:18:55,000 --> 00:19:03,780
Phần thứ hai chúng tôi sẽ kiểm tra là Khác nếu mật khẩu người dùng.

216
00:19:03,780 --> 00:19:06,800
Vì vậy, điều đó có nghĩa là người dùng tồn tại tại tại thời điểm này.

217
00:19:06,800 --> 00:19:12,420
Vì vậy, kiểm tra thứ hai mà chúng tôi sẽ làm là mật khẩu người dùng không

218
00:19:12,420 --> 00:19:22,330
bằng mật khẩu sau đó.

219
00:19:22,330 --> 00:19:25,090
Chúng ta một lần nữa cần phải chỉ ra lỗi ở đó.

220
00:19:25,090 --> 00:19:28,820
Vì vậy, lỗi sẽ được nói,

221
00:19:29,790 --> 00:19:34,570
trong trường hợp này, chúng tôi sẽ nói

222
00:19:34,570 --> 00:19:41,390
“mật khẩu của bạn là không chính xác”.

223
00:19:41,390 --> 00:19:44,085
Đó là phần thứ hai ở đây.

224
00:19:44,085 --> 00:19:49,650
Vì vậy, mật khẩu của bạn là không chính xác và sau đó là phần cuối cùng.

225
00:19:49,650 --> 00:19:52,515
Chúng tôi sẽ nói “khác”.

226
00:19:52,515 --> 00:19:59,755
Vì vậy, hãy để tôi thụt lề mã này.

227
00:19:59,755 --> 00:20:05,775
Vì vậy, khác nếu user.username

228
00:20:05,775 --> 00:20:15,815
là username mà rõ ràng phải đúng trong trường hợp này.

229
00:20:15,815 --> 00:20:17,990
Sau đó, phần thứ hai,

230
00:20:17,990 --> 00:20:27,620
user.password là bằng mật khẩu mà cũng rõ ràng nên được chính xác tại thời điểm này.

231
00:20:27,620 --> 00:20:29,720
Nhưng trong mọi trường hợp,

232
00:20:29,720 --> 00:20:38,885
tôi sẽ kiểm tra vấn đề đó ở đây và điều này khác sẽ không xảy ra ở tất cả trong trường hợp này.

233
00:20:38,885 --> 00:20:41,695
Vì vậy, vào thời điểm bạn đạt đến thời điểm này,

234
00:20:41,695 --> 00:20:45,410
tên người dùng nên

235
00:20:45,410 --> 00:20:48,980
giống như tên người dùng và mật khẩu nên giống như mật khẩu,

236
00:20:48,980 --> 00:20:55,240
nhưng trong mọi trường hợp tôi đặt trong một kiểm tra lại tại thời điểm đó chỉ để được chắc chắn gấp đôi.

237
00:20:55,240 --> 00:20:56,590
Sau đó, trong trường hợp này,

238
00:20:56,590 --> 00:21:02,765
sau đó chúng ta sẽ nói req.session.user được xác thực.

239
00:21:02,765 --> 00:21:05,440
Vì vậy, chúng tôi sẽ thiết lập điều này để xác thực

240
00:21:05,440 --> 00:21:16,480
và cũng là điều này, chúng tôi sẽ nói

241
00:21:16,480 --> 00:21:18,660
res.StatusCode là 200.

242
00:21:18,660 --> 00:21:21,870
Vì vậy, chúng tôi đã thành công có thể xác thực người dùng.

243
00:21:21,870 --> 00:21:29,030
Vì vậy, chúng tôi sẽ nói res.StatusCode là 200 và sau đó chúng tôi sẽ nói res.Setheader

244
00:21:30,540 --> 00:21:43,690
Content-Type văn bản đồng bằng và

245
00:21:43,690 --> 00:21:51,500
res.end chúng tôi sẽ chỉ đơn giản là gửi một thông báo nói “Bạn đang xác thực”.

246
00:21:53,700 --> 00:22:00,825
Đó là nó. Vì vậy, điều này bao gồm phần sau đó của người dùng FinDone.

247
00:22:00,825 --> 00:22:05,360
Vì vậy, trước tiên, chúng tôi kiểm tra rằng nếu người dùng là null,

248
00:22:05,360 --> 00:22:07,410
điều đó có nghĩa là chúng tôi không thể tìm thấy người dùng,

249
00:22:07,410 --> 00:22:12,025
vì vậy chúng tôi rõ ràng là trả về một lỗi nói rằng tên người dùng không tồn tại.

250
00:22:12,025 --> 00:22:15,195
Nếu mật khẩu của người dùng không khớp với mật khẩu,

251
00:22:15,195 --> 00:22:16,450
vì vậy tại thời điểm này,

252
00:22:16,450 --> 00:22:19,150
người dùng tồn tại nhưng mật khẩu không khớp, vì vậy chúng tôi sẽ nói,

253
00:22:19,150 --> 00:22:22,640
“Mật khẩu của bạn không chính xác”, và sau đó, cuối cùng,

254
00:22:22,640 --> 00:22:29,050
chúng tôi đạt được điểm này sau đó tên người dùng và mật khẩu phải được xác định chính xác.

255
00:22:29,330 --> 00:22:35,780
Mặc dù tôi không cần kiểm tra này nhưng tôi chỉ cần đặt nó ở đó và sau đó tại thời điểm này,

256
00:22:35,780 --> 00:22:38,680
tôi sẽ thiết lập req.session.user để xác thực

257
00:22:38,680 --> 00:22:41,830
nó và sau đó thiết lập mã trạng thái để 200 có nghĩa là bạn đã

258
00:22:41,830 --> 00:22:48,880
thành công có thể xác thực người dùng và sau đó bạn có thể kết thúc tại thời điểm đó.

259
00:22:48,880 --> 00:22:51,490
Bởi vì đây là một sau đó,

260
00:22:51,490 --> 00:22:54,685
tôi sẽ đặt trong một nắm bắt tại thời điểm này, vì

261
00:22:54,685 --> 00:23:03,845
vậy chúng tôi sẽ nói lỗi bắt và nếu lỗi xảy ra,

262
00:23:03,845 --> 00:23:09,130
sau đó tôi sẽ chỉ đơn giản là vượt qua

263
00:23:09,130 --> 00:23:14,560
các lỗi tiếp theo để

264
00:23:14,560 --> 00:23:20,090
xử lý lỗi sẽ có thể đối phó với các lỗi một cách thích hợp.

265
00:23:20,090 --> 00:23:24,415
Vì vậy, kết thúc ra người dùng này FinDone.

266
00:23:24,415 --> 00:23:31,020
Bây giờ, đây là trường hợp khi req.session.user không được thiết lập.

267
00:23:31,020 --> 00:23:32,905
Nếu điều đó đã được thiết lập,

268
00:23:32,905 --> 00:23:38,095
thì điều đó có nghĩa là người dùng đã đăng nhập.

269
00:23:38,095 --> 00:23:40,630
Vì vậy, trong trường hợp này,

270
00:23:40,630 --> 00:23:50,650
phần khác ở đây đề cập đến tình huống nói rằng chúng tôi sẽ thiết lập

271
00:23:50,650 --> 00:23:52,660
StatusCode để 200

272
00:23:52,660 --> 00:24:12,205
và Content-Type để văn bản/đồng bằng và sau đó chúng tôi sẽ nói,

273
00:24:12,205 --> 00:24:17,680
“Bạn đã được xác thực.”

274
00:24:17,680 --> 00:24:21,910
Vì vậy, nếu bạn đạt được phần khác này,

275
00:24:22,690 --> 00:24:29,060
bạn sẽ đến đây vì req.session.user đã không phải là null,

276
00:24:29,060 --> 00:24:32,150
do đó có nghĩa là người dùng đã được xác thực,

277
00:24:32,150 --> 00:24:34,995
do đó, có nghĩa là khi bạn đạt đến điểm này,

278
00:24:34,995 --> 00:24:38,200
sau đó người dùng đã đăng nhập trước đó,

279
00:24:38,200 --> 00:24:41,100
vì vậy bạn không cần phải xác minh.

280
00:24:41,100 --> 00:24:42,220
Vì vậy, bạn sẽ đơn giản nói,

281
00:24:42,220 --> 00:24:46,270
“Bạn đã được chứng thực,” và sau đó kết thúc vào thời điểm này.

282
00:24:46,270 --> 00:24:54,975
Được rồi. Vì vậy, bây giờ, phương pháp cuối cùng mà chúng tôi sẽ thực hiện là để đăng xuất người dùng.

283
00:24:54,975 --> 00:24:59,180
Vì vậy, chúng tôi sẽ làm một router.get trên /logout.

284
00:24:59,180 --> 00:25:02,170
Bạn phải tự hỏi tại sao chúng ta làm một get trên

285
00:25:02,170 --> 00:25:07,000
đăng xuất chứ không phải là một bài mà chúng tôi đã làm trên đăng nhập? Khi

286
00:25:07,000 --> 00:25:11,090
đăng nhập, bạn cần phải gửi tên người dùng và mật khẩu.

287
00:25:11,090 --> 00:25:14,900
Để đăng xuất, bạn chỉ đơn giản

288
00:25:17,590 --> 00:25:20,910
là đăng xuất bản thân khỏi hệ thống, vì vậy bạn không cần phải cung cấp thêm bất kỳ thông tin nào vì máy chủ đã theo dõi

289
00:25:20,910 --> 00:25:30,665
bạn dựa trên ID phiên của bạn và bên trong cookie phiên ở đây.

290
00:25:30,665 --> 00:25:32,620
Vì vậy, đó là lý do tại sao chúng tôi không

291
00:25:32,620 --> 00:25:38,890
rõ ràng cần phải gửi thêm bất kỳ thông tin nào trong nội dung của thông điệp.

292
00:25:38,890 --> 00:25:46,120
Vì vậy, chúng tôi sẽ nói nếu req.session để có nghĩa là phiên phải tồn tại

293
00:25:46,120 --> 00:25:50,070
, nếu không, bạn đang cố gắng để đăng xuất một người dùng chưa đăng nhập.

294
00:25:50,070 --> 00:25:52,280
Vì vậy, nó không có ý nghĩa.

295
00:25:52,280 --> 00:25:57,490
Bây giờ, phiên bản chính nó cung cấp phương thức này

296
00:25:57,490 --> 00:26:03,415
gọi là destroy và khi bạn gọi phương thức destroy,

297
00:26:03,415 --> 00:26:07,520
phiên bị phá hủy và thông tin được gỡ bỏ

298
00:26:07,520 --> 00:26:12,945
từ phía máy chủ liên quan đến phiên này.

299
00:26:12,945 --> 00:26:16,970
Vì vậy, có nghĩa là nếu khách hàng cố gắng gửi lại

300
00:26:16,970 --> 00:26:19,190
thông tin phiên được lưu trữ dưới

301
00:26:19,190 --> 00:26:21,430
dạng cookie đã ký ở phía khách hàng,

302
00:26:21,430 --> 00:26:22,640
điều đó sẽ không hợp lệ.

303
00:26:22,640 --> 00:26:27,870
Vì vậy, chúng ta cần một phương pháp xóa cookie được lưu trữ ở phía khách hàng.

304
00:26:27,870 --> 00:26:31,110
Bây giờ, thao tác này sẽ loại bỏ

305
00:26:31,110 --> 00:26:36,805
thông tin phiên từ phía máy chủ để phiên không còn hợp lệ.

306
00:26:36,805 --> 00:26:38,060
Vì vậy, tại thời điểm này,

307
00:26:38,060 --> 00:26:45,115
chúng tôi sẽ nói req.session.destroy và sau đó chúng tôi sẽ nói, res.ClearCookie.

308
00:26:45,115 --> 00:26:49,640
Vì vậy, ClearCookie là một cách để yêu cầu khách hàng

309
00:26:49,640 --> 00:26:54,875
loại bỏ cookie và tên cookie là ID phiên.

310
00:26:54,875 --> 00:26:56,630
Vì vậy, trong bài tập trước,

311
00:26:56,630 --> 00:27:00,910
chúng tôi thấy rằng cookie đã được lưu trữ với tên của phiên ID ở phía khách hàng.

312
00:27:00,910 --> 00:27:05,430
Vì vậy, chúng tôi đang yêu cầu khách hàng xóa cookie này khỏi

313
00:27:05,430 --> 00:27:10,935
phía khách hàng trong tin nhắn trả lời và sau đó chúng tôi sẽ nói,

314
00:27:10,935 --> 00:27:16,835
res.redirect và chúng tôi sẽ chuyển hướng nó đến trang chủ ở đây.

315
00:27:16,835 --> 00:27:21,540
Vì vậy, đây là một cách chuyển hướng người dùng để nhập trang chuẩn của họ

316
00:27:21,540 --> 00:27:24,790
, ví dụ như trang chủ của ứng dụng của bạn.

317
00:27:24,790 --> 00:27:31,090
Vì vậy, đây là cách bạn sẽ xử lý đăng xuất của hệ thống.

318
00:27:31,090 --> 00:27:33,200
Nếu req.session không tồn tại,

319
00:27:33,200 --> 00:27:35,380
thì điều đó có nghĩa là bạn chưa đăng nhập,

320
00:27:35,380 --> 00:27:37,310
vì vậy chúng tôi sẽ phải tạo ra lỗi.

321
00:27:37,310 --> 00:27:38,945
Vì vậy, chúng tôi sẽ nói var err,

322
00:27:38,945 --> 00:27:46,370
Lỗi mới, “Bạn không đăng nhập”,

323
00:27:47,100 --> 00:27:52,615
và chúng tôi sẽ thiết lập trạng thái lỗi 403,

324
00:27:52,615 --> 00:27:54,760
đây là một hoạt động bị cấm và

325
00:27:54,760 --> 00:28:01,060
sau đó tạo ra lỗi cho trình xử lý lỗi, đó là nó.

326
00:28:01,060 --> 00:28:08,830
Vì vậy, bây giờ, bạn thấy rằng chúng tôi đã mở rộng bộ định tuyến của người dùng để hỗ trợ ba điểm cuối mới, điểm

327
00:28:08,830 --> 00:28:13,330
cuối đăng ký cho phép người dùng đăng ký, điểm

328
00:28:13,330 --> 00:28:17,785
cuối đăng nhập cho phép người dùng đăng ký đăng nhập,

329
00:28:17,785 --> 00:28:24,730
và sau đó là điểm cuối đăng xuất cho phép người dùng đăng nhập đăng nhập đăng xuất khỏi hệ thống.

330
00:28:24,730 --> 00:28:26,970
Trong quá trình đăng xuất,

331
00:28:26,970 --> 00:28:29,340
bạn đang phá hủy phiên ở phía máy chủ,

332
00:28:29,340 --> 00:28:31,890
bạn cũng đang xóa cookie ở phía máy khách,

333
00:28:31,890 --> 00:28:40,350
do đó máy khách không thể được sử dụng trong phiên hết hạn để cố gắng liên hệ với máy chủ đó.

334
00:28:40,350 --> 00:28:43,480
Một điều chỉnh nhỏ trong users.js, điều

335
00:28:43,480 --> 00:28:49,225
này nên được var Người dùng yêu cầu.. /models/user,

336
00:28:49,225 --> 00:28:58,095
nhớ lại rằng tập tin users.js nằm trong thư mục route và sau đó

337
00:28:58,095 --> 00:29:01,130
tập tin user.js nằm

338
00:29:01,130 --> 00:29:07,440
trong thư mục model là lên một cấp độ và sau đó vào thư mục model.

339
00:29:07,440 --> 00:29:11,620
Vậy nên, đây là... /mô hình/người dùng,

340
00:29:11,620 --> 00:29:15,655
do đó, thực hiện điều chỉnh nhỏ, đó là nó.

341
00:29:15,655 --> 00:29:19,040
Chúng tôi đã sửa đổi tệp users.js,

342
00:29:19,040 --> 00:29:23,690
bây giờ điều cuối cùng mà chúng ta cần làm là đi và sửa tệp app.js.

343
00:29:23,690 --> 00:29:25,965
Trong tệp app.js ứng dụng,

344
00:29:25,965 --> 00:29:29,520
nếu bạn duyệt vào tệp app.js,

345
00:29:29,520 --> 00:29:31,160
bạn sẽ thấy rằng chúng tôi có

346
00:29:31,160 --> 00:29:37,240
chỉ số dấu gạch chéo này ở đây và gạch chéo người dùng ở đây sau khi xác thực.

347
00:29:37,240 --> 00:29:43,360
Bây giờ, điều này sẽ không hiệu quả cho chúng tôi bởi vì nếu bạn cần đăng ký,

348
00:29:43,360 --> 00:29:49,140
sau đó người dùng sẽ đăng ký và đăng nhập trước khi ủy quyền được xác nhận,

349
00:29:49,140 --> 00:29:54,910
dù sao nếu đăng ký và đăng nhập là cho quá trình đăng ký,

350
00:29:54,910 --> 00:30:04,295
vì vậy tôi sẽ di chuyển chúng lên trước khi bước xác thực ở đây.

351
00:30:04,295 --> 00:30:09,280
Vì vậy, chúng ta sẽ chuyển nó lên vị trí này.

352
00:30:09,280 --> 00:30:15,430
Vì vậy, do đó, một người dùng đến có thể truy cập

353
00:30:15,430 --> 00:30:21,589
vào tập tin chỉ mục tại dấu gạch chéo và cũng truy cập vào điểm cuối của người dùng mà không được xác thực

354
00:30:21,589 --> 00:30:23,205
, nhưng bất kỳ điểm cuối nào khác,

355
00:30:23,205 --> 00:30:25,400
người dùng phải được xác thực,

356
00:30:25,400 --> 00:30:28,665
vì vậy đó là cách chúng tôi thiết lập này.

357
00:30:28,665 --> 00:30:32,375
Bên trong xác thực chức năng, chúng tôi sẽ nói,

358
00:30:32,375 --> 00:30:40,695
“Nếu không req.session.user”, sau đó nhận thấy rằng nơi này,

359
00:30:40,695 --> 00:30:47,980
chúng tôi sẽ không cho phép người dùng đến đây mà không có người dùng đã đăng nhập.

360
00:30:47,980 --> 00:30:50,450
Vì vậy, nếu không req.session.user,

361
00:30:50,450 --> 00:30:55,170
sau đó chúng tôi sẽ chỉ đơn giản nói rằng bạn không được chứng thực.

362
00:31:03,600 --> 00:31:09,330
Xác thực này phải được thực hiện bằng cách sử dụng phương pháp đăng nhập ở đây.

363
00:31:09,330 --> 00:31:13,510
Vì vậy, tôi sẽ loại bỏ toàn bộ phần này ở đây.

364
00:31:17,340 --> 00:31:22,285
Vì vậy, chúng tôi sẽ nói, nếu không req.session.user,

365
00:31:22,285 --> 00:31:28,670
chúng tôi sẽ nói rằng bạn không được xác thực và vì vậy chúng tôi sẽ phải gửi một bức ảnh ba ở đây,

366
00:31:28,670 --> 00:31:31,560
do đó, có nghĩa là bạn không bao giờ nên đi xuống vào thời điểm này ở

367
00:31:31,560 --> 00:31:34,785
tất cả mà không cần người dùng đăng nhập.

368
00:31:34,785 --> 00:31:37,575
Vì vậy, chúng tôi sẽ nói rằng bạn không được chứng thực.

369
00:31:37,575 --> 00:31:41,990
Nhớ lại rằng bạn cần phải xác thực bản thân bằng cách thực hiện một bài đăng trên

370
00:31:41,990 --> 00:31:47,120
dấu gạch chéo người dùng dấu gạch chéo điểm kết thúc đăng nhập.

371
00:31:47,120 --> 00:31:50,930
Vì vậy, chúng tôi sẽ nói rằng bạn không được xác thực,

372
00:31:50,930 --> 00:31:56,175
nếu không, nếu req.session.user bằng,

373
00:31:56,175 --> 00:32:01,720
nhớ lại rằng trong chức năng đăng nhập trong

374
00:32:01,720 --> 00:32:07,780
users.js chúng tôi đã thiết lập người dùng phiên tiếp theo để chuỗi xác thực.

375
00:32:07,780 --> 00:32:10,055
Vì vậy, đó là những gì chúng ta sẽ kiểm tra.

376
00:32:10,055 --> 00:32:14,355
Chúng tôi sẽ nói, nếu req.session.user được xác thực,

377
00:32:14,355 --> 00:32:21,955
chúng tôi sẽ nói tiếp theo, nếu không bạn không được xác thực một lần nữa.

378
00:32:21,955 --> 00:32:31,990
Sau đó chúng tôi sẽ gửi lại một tin nhắn bị cấm. Đó là nó.

379
00:32:31,990 --> 00:32:33,995
Vì vậy, với bản cập nhật này,

380
00:32:33,995 --> 00:32:36,375
tệp app.js của tôi cũng đã sẵn sàng.

381
00:32:36,375 --> 00:32:38,590
Bây giờ, sau khi thực hiện các bản cập nhật này, chúng

382
00:32:38,590 --> 00:32:42,470
ta hãy đi và kiểm tra cách ứng dụng của chúng tôi hoạt động ngay bây giờ.

383
00:32:42,470 --> 00:32:44,350
Đi đến thiết bị đầu cuối,

384
00:32:44,350 --> 00:32:49,655
nếu máy chủ của bạn đang chạy dừng nó và sau đó khởi động lại máy chủ của bạn.

385
00:32:49,655 --> 00:32:51,600
Máy chủ của tôi không chạy vào lúc này,

386
00:32:51,600 --> 00:32:53,405
vì vậy tôi sẽ nói npm bắt đầu,

387
00:32:53,405 --> 00:32:56,440
và máy chủ của tôi nên được lên và chạy.

388
00:32:56,440 --> 00:33:00,540
Bây giờ chúng ta hãy xem cách chúng ta sẽ truy cập vào máy chủ.

389
00:33:00,540 --> 00:33:04,150
Đi đến Postman, hãy để tôi làm một GET trên

390
00:33:04,150 --> 00:33:07,290
localhost:3000/món ăn và sau đó bạn sẽ ngay lập tức thấy

391
00:33:07,290 --> 00:33:10,375
rằng nó than phiền nói rằng bạn không được chứng thực.

392
00:33:10,375 --> 00:33:13,095
Rõ ràng, tôi không được chứng thực ở đây.

393
00:33:13,095 --> 00:33:19,560
Hãy để tôi cố gắng truy cập chỉ là localhost:3000 và bạn sẽ thấy

394
00:33:19,560 --> 00:33:22,625
rằng, root đó có sẵn cho chúng tôi.

395
00:33:22,625 --> 00:33:29,850
Bây giờ, tất nhiên, chúng tôi muốn đầu tiên đăng ký một người dùng và sau đó đăng nhập với

396
00:33:29,850 --> 00:33:37,745
tư cách là người dùng và sau đó có quyền truy cập vào phần còn lại của các điểm cuối API REST.

397
00:33:37,745 --> 00:33:40,480
Vì vậy, trước tiên, hãy để tôi đăng ký một người dùng.

398
00:33:40,480 --> 00:33:41,925
Để đăng ký người dùng,

399
00:33:41,925 --> 00:33:51,410
tôi cần phải làm một POST cho localhost:3000/users/đăng ký.

400
00:33:53,700 --> 00:33:57,710
Đối với thông điệp POST này,

401
00:33:57,930 --> 00:34:01,635
trong nội dung của thông điệp,

402
00:34:01,635 --> 00:34:07,860
tôi cần phải bao gồm trong nội dung

403
00:34:07,860 --> 00:34:15,080
của thông điệp một chuỗi JSON với tên người dùng.

404
00:34:15,080 --> 00:34:19,390
Vì vậy, hãy để tôi đăng nhập bản thân mình và

405
00:34:19,390 --> 00:34:27,770
sau đó tôi sẽ chỉ sử dụng mật khẩu làm mật khẩu.

406
00:34:28,810 --> 00:34:31,835
Đây là một đăng ký hợp lệ.

407
00:34:31,835 --> 00:34:35,505
Vì vậy, khi tôi đăng ký như là một người dùng với

408
00:34:35,505 --> 00:34:42,150
thông tin này dưới dạng một chuỗi JSON bao gồm trong nội dung của tin nhắn,

409
00:34:42,150 --> 00:34:47,590
hãy để tôi thấy rằng tiêu đề bây giờ chứa nội dung loại ứng dụng,

410
00:34:47,590 --> 00:34:50,440
JSON bởi vì tôi đã thiết lập JSON trong nội dung của tin

411
00:34:50,440 --> 00:34:54,660
nhắn và sau đó gửi POST để đăng ký.

412
00:34:54,660 --> 00:34:57,175
Sau đó, khi tôi gửi POST đến đăng ký,

413
00:34:57,175 --> 00:35:02,460
bạn ngay lập tức thấy những gì được trả lại bởi máy chủ ở đây.

414
00:35:02,460 --> 00:35:05,630
Vì vậy, bạn thấy rằng máy chủ đã trở lại nói,

415
00:35:05,630 --> 00:35:10,205
“Đăng ký thành công” và chính

416
00:35:10,205 --> 00:35:13,485
nó, nó cung cấp cho tôi các chi tiết của người dùng ở đây.

417
00:35:13,485 --> 00:35:19,340
Vì vậy, đây là một bản ghi tồn tại trong MongoDB của tôi và

418
00:35:19,340 --> 00:35:25,090
lưu ý rằng kiểu mô hình là kiểu mô hình người dùng mà chúng tôi đã thiết lập.

419
00:35:25,090 --> 00:35:28,300
Vì vậy, chúng tôi có tên người dùng và mật khẩu và

420
00:35:28,300 --> 00:35:33,535
cờ quản trị như bạn có thể thấy được đặt thành false theo mặc định.

421
00:35:33,535 --> 00:35:37,285
Một khi chúng tôi đăng ký người dùng,

422
00:35:37,285 --> 00:35:40,370
người dùng này bây giờ là người dùng hợp lệ.

423
00:35:40,370 --> 00:35:45,640
Vì vậy, hãy để tôi cố gắng một lần nữa POST cùng một người dùng và xem những gì xảy ra.

424
00:35:45,640 --> 00:35:48,935
Vì vậy, khi tôi POST cùng một người dùng rõ ràng,

425
00:35:48,935 --> 00:35:50,385
có từ phía máy chủ,

426
00:35:50,385 --> 00:35:52,840
nó trả lời nói rằng người dùng này đã tồn tại.

427
00:35:52,840 --> 00:35:58,480
Vì vậy, bạn có thể thấy rằng chúng tôi đã thiết lập thủ tục đăng ký của chúng tôi để không cho phép

428
00:35:58,480 --> 00:36:04,580
người dùng trùng lặp đăng ký với cùng một ID người dùng.

429
00:36:04,580 --> 00:36:07,135
Được rồi. Vì vậy, đó là phần thứ hai.

430
00:36:07,135 --> 00:36:13,570
Bây giờ, chúng ta hãy làm một đăng nhập của người dùng.

431
00:36:13,570 --> 00:36:15,770
Để làm một đăng nhập của người dùng,

432
00:36:15,770 --> 00:36:20,400
hãy để tôi loại bỏ các loại nội dung và sau đó tôi cũng sẽ

433
00:36:20,400 --> 00:36:25,440
loại bỏ các cơ thể bởi vì cho đăng nhập, đó là không cần thiết.

434
00:36:25,440 --> 00:36:28,200
Vì vậy, tôi không điền vào bất cứ điều gì

435
00:36:28,200 --> 00:36:31,790
trong tiêu đề và sau đó cố gắng để đăng nhập và khi tôi cố gắng để đăng nhập,

436
00:36:31,790 --> 00:36:34,805
nó trả lời lại nói rằng bạn không được xác thực.

437
00:36:34,805 --> 00:36:36,175
Anh không được phép.

438
00:36:36,175 --> 00:36:39,595
Bây giờ, tôi cần phải đăng nhập vào bản thân mình.

439
00:36:39,595 --> 00:36:42,940
Vì vậy, đây là nơi tôi có thể sử dụng xác thực cơ bản.

440
00:36:42,940 --> 00:36:46,240
Vì vậy, trong xác thực cơ bản,

441
00:36:46,240 --> 00:36:51,170
tôi chỉ cần nhập tên người dùng và

442
00:36:51,170 --> 00:36:56,575
mật khẩu của tôi mà tôi vừa đăng ký ở bước trước và sau đó cập nhật yêu cầu của tôi,

443
00:36:56,575 --> 00:37:00,060
và sau đó thực hiện một POST trên đăng nhập.

444
00:37:00,060 --> 00:37:02,400
Vì vậy, khi tôi thực hiện một POST trên đăng nhập,

445
00:37:02,400 --> 00:37:06,935
bạn thấy rằng máy chủ trả lời nói, “Bạn được xác thực”.

446
00:37:06,935 --> 00:37:08,740
Vì vậy, tại thời điểm này,

447
00:37:08,740 --> 00:37:11,400
tôi có thể thực hiện các

448
00:37:11,400 --> 00:37:16,115
yêu cầu GET, PUT, POST và DELETE trên tất cả các điểm cuối khác.

449
00:37:16,115 --> 00:37:26,370
Vì vậy, tại thời điểm này, nếu tôi làm một GET trên điểm cuối món ăn,

450
00:37:28,760 --> 00:37:32,675
bạn sẽ thấy rằng điều này trả về

451
00:37:32,675 --> 00:37:39,160
trường trống vì cơ sở dữ liệu của tôi hiện đang trống tại thời điểm này.

452
00:37:39,160 --> 00:37:44,370
Hãy để tôi xóa ủy quyền và cũng từ tiêu đề loại bỏ

453
00:37:44,370 --> 00:37:49,575
ủy quyền và sau đó làm GET và nó là hộp công cụ chỉ tốt.

454
00:37:49,575 --> 00:37:52,480
Vì vậy, bạn có thể thấy rằng bây giờ tôi có thể

455
00:37:52,480 --> 00:37:56,065
truy cập các điểm cuối bởi vì tôi đã đăng nhập bản thân mình.

456
00:37:56,065 --> 00:38:00,040
Vì vậy, bây giờ, hãy để tôi làm một đăng xuất của người dùng.

457
00:38:00,040 --> 00:38:05,910
Vì vậy, chúng ta sẽ nói, localhost:3000 và đăng xuất.

458
00:38:05,910 --> 00:38:08,875
Cũng lưu ý rằng, trong cookie,

459
00:38:08,875 --> 00:38:12,290
một cookie đã được thiết lập tại ID phiên ngay tại đó.

460
00:38:12,290 --> 00:38:17,080
Vì vậy, cookie đó tồn tại trên trang web khách hàng của tôi.

461
00:38:17,080 --> 00:38:22,715
Vì vậy, bây giờ, hãy để tôi đăng nhập bản thân mình ra bằng cách nói GET localhost:3000/users/logout.

462
00:38:22,715 --> 00:38:26,580
Vì vậy, khi tôi làm một đăng xuất khỏi người dùng,

463
00:38:26,580 --> 00:38:29,765
bạn sẽ ngay lập tức thấy rằng tôi được chuyển hướng đến

464
00:38:29,765 --> 00:38:37,830
đó localhost:3000 điểm cuối và cũng nhận thấy rằng cookie đã biến mất.

465
00:38:37,830 --> 00:38:40,140
Vì vậy, khi tôi nhìn vào cookie,

466
00:38:40,140 --> 00:38:42,040
bạn thấy rằng localhost,

467
00:38:42,040 --> 00:38:46,470
cookie đã biến mất bởi vì từ phía máy chủ của tôi khi tôi làm đăng xuất

468
00:38:46,470 --> 00:38:51,495
nó sẽ gửi lại một cookie rõ ràng phần còn lại cho phía khách hàng và do đó cookie đã biến mất.

469
00:38:51,495 --> 00:38:54,555
Bây giờ, nếu tôi cố gắng để làm một GET

470
00:38:54,555 --> 00:39:02,480
trên localhost: 3000/món ăn điểm cuối,

471
00:39:02,480 --> 00:39:05,899
điều này sẽ không làm việc vì tôi không được xác thực.

472
00:39:05,899 --> 00:39:11,610
Vì vậy, điều này cho bạn thấy làm thế nào bạn có thể mở rộng máy chủ Express của bạn

473
00:39:11,610 --> 00:39:17,190
để cho phép người dùng đăng ký bản thân và sau đó cho phép người dùng đăng nhập vào hệ thống,

474
00:39:17,190 --> 00:39:19,860
và sau đó cũng đăng xuất từ hệ thống.

475
00:39:19,860 --> 00:39:25,520
Ở phía máy chủ, bạn đang theo dõi một người dùng đăng nhập bằng cách sử dụng phiên làm

476
00:39:25,520 --> 00:39:28,260
việc và sử dụng cookie ở phía máy khách và khi người dùng đăng

477
00:39:28,260 --> 00:39:31,375
xuất cookie bị phá hủy ở phía máy khách.

478
00:39:31,375 --> 00:39:34,540
Với điều này, chúng tôi hoàn thành bài tập này.

479
00:39:34,540 --> 00:39:37,390
Đây là thời điểm tốt để bạn thực hiện một Git cam kết,

480
00:39:37,390 --> 00:39:42,420
với thông điệp, Express phiên phần hai.