1
00:00:03,950 --> 00:00:09,180
Bây giờ chúng ta đã hiểu hộ chiếu và làm thế nào hộ chiếu thêm

2
00:00:09,180 --> 00:00:14,294
vào một middleware xác thực đơn giản cho ứng dụng NodeJS của chúng tôi,

3
00:00:14,294 --> 00:00:18,435
và cung cấp một

4
00:00:18,435 --> 00:00:22,935
cách dễ dàng để cấu hình linh hoạt và cung cấp các chiến lược khác nhau để xác thực người dùng, chúng

5
00:00:22,935 --> 00:00:27,850
ta hãy đi trên một hành trình với hộ chiếu của chúng tôi.

6
00:00:27,890 --> 00:00:31,020
Để bắt đầu bài tập này,

7
00:00:31,020 --> 00:00:33,945
như bước đầu tiên chúng ta hãy cài đặt các

8
00:00:33,945 --> 00:00:40,135
mô-đun nút hộ chiếu, hộ chiếu địa phương và hộ chiếu địa phương mongoose vào máy chủ nhầm lẫn của chúng tôi.

9
00:00:40,135 --> 00:00:44,030
Vì vậy, tại dấu nhắc loại npm instal_

10
00:00:44,030 --> 00:00:49,820
passport, hộ chiếu địa phương,

11
00:00:49,820 --> 00:00:59,430
hộ chiếu địa phương mnus mnus trừ lưu và cài đặt ba mô-đun.

12
00:00:59,430 --> 00:01:05,980
Như bạn có thể thấy tại thời điểm này chúng tôi đang bắt đầu với hộ chiếu 0.4.0, hộ

13
00:01:05,980 --> 00:01:15,004
chiếu địa phương 1.0.0 và hộ chiếu địa phương mongoose 5.0.1 phiên bản trong khóa học này.

14
00:01:15,004 --> 00:01:20,110
Bây giờ chúng tôi đã cài đặt hộ chiếu, hộ chiếu địa phương và hộ chiếu địa phương mongoose,

15
00:01:20,110 --> 00:01:25,640
chúng ta hãy vào máy chủ nhầm lẫn và đi đến tệp user.js.

16
00:01:25,640 --> 00:01:31,325
Chúng tôi sẽ cập nhật lược đồ người dùng và mô hình để sử dụng hộ chiếu địa phương-mongoose.

17
00:01:31,325 --> 00:01:33,735
Để làm điều đó, ở đây chúng ta sẽ nói

18
00:01:33,735 --> 00:01:41,060
var PassportLocalmongoose

19
00:01:41,060 --> 00:01:45,390
yêu cầu hộ chiếu địa phương-mongoose.

20
00:01:46,190 --> 00:01:50,330
Vì vậy, điều này chúng tôi sẽ cài đặt như là

21
00:01:50,330 --> 00:01:56,780
các plugin mongoose trong ứng dụng của chúng tôi và chúng tôi có thể loại bỏ tên người dùng và

22
00:01:56,780 --> 00:02:00,440
mật khẩu bởi vì những sẽ được tự động thêm vào bởi

23
00:02:00,440 --> 00:02:04,535
các plugin hộ chiếu địa phương-mongoose ở đây và

24
00:02:04,535 --> 00:02:12,980
sử dụng đó như là một plugin trong giản đồ và mô hình mongoose của chúng tôi.

25
00:02:12,980 --> 00:02:20,160
Chúng tôi sẽ nói người dùng cắm vào và hộ chiếu địa phương-mongoose.

26
00:02:20,160 --> 00:02:23,360
Vì vậy, điều này sẽ tự động như tôi đã nói thêm hỗ trợ cho

27
00:02:23,360 --> 00:02:28,040
tên người dùng và băm lưu trữ mật khẩu bằng cách sử dụng

28
00:02:28,040 --> 00:02:33,305
băm và muối và thêm

29
00:02:33,305 --> 00:02:37,235
các phương pháp bổ sung trên giản đồ người dùng

30
00:02:37,235 --> 00:02:40,880
và mô hình đó là hữu ích cho chứng thực hộ chiếu.

31
00:02:40,880 --> 00:02:48,390
Vì vậy, một khi chúng tôi đã hoàn thành cập nhật các tập tin user.js sau đó trong thư mục dự án của

32
00:02:48,390 --> 00:02:55,160
chúng tôi, chúng tôi sẽ tạo một tập tin mới và đặt tên nó là authenticate.js.

33
00:02:55,160 --> 00:02:57,800
Trong tập tin authentic.js,

34
00:02:57,800 --> 00:03:03,420
cho phép tôi nhập khẩu hộ chiếu.

35
00:03:03,940 --> 00:03:10,700
Vì vậy, chúng tôi sẽ nói yêu cầu hộ chiếu và chúng tôi sẽ

36
00:03:10,700 --> 00:03:16,700
sử dụng tập tin này để lưu trữ các chiến lược xác thực mà chúng tôi sẽ cấu hình.

37
00:03:16,700 --> 00:03:26,195
Vì vậy, chúng tôi sẽ nói var. LocalStrategy yêu cầu hộ chiếu địa phương,

38
00:03:26,195 --> 00:03:36,140
vì vậy các mô-đun hộ chiếu địa phương xuất khẩu một chiến lược mà chúng ta có thể sử dụng cho ứng dụng của chúng tôi.

39
00:03:36,140 --> 00:03:39,800
Vì vậy, chúng tôi sẽ nói hộ chiếu local.strategy

40
00:03:39,800 --> 00:03:56,700
và sau đó chúng tôi sẽ nhập khẩu người dùng từ mô hình người dùng.

41
00:03:58,550 --> 00:04:06,270
Bây giờ chúng ta hãy cấu hình hộ chiếu với chiến lược địa phương mới

42
00:04:06,270 --> 00:04:13,970
và sau đó chúng tôi sẽ xuất khẩu này từ tập tin này bởi vì điều này sẽ là một mô-đun nút.

43
00:04:13,970 --> 00:04:23,940
Vì vậy, chúng tôi sẽ nói exports.local và chúng tôi sẽ nói hộ chiếu và bạn

44
00:04:23,940 --> 00:04:28,580
có thể thấy rằng hộ chiếu hỗ trợ các phương pháp khác nhau

45
00:04:28,580 --> 00:04:33,710
ở đây vì vậy chúng tôi sẽ nói sử dụng hộ chiếu và nói

46
00:04:33,710 --> 00:04:39,125
LocalStrategy mới và sau đó đây là nơi

47
00:04:39,125 --> 00:04:47,715
các chức năng được hỗ trợ bởi hộ chiếu địa phương-mongoose đến với sự giúp đỡ của chúng tôi.

48
00:04:47,715 --> 00:04:52,225
Vì vậy, chiến lược địa phương sẽ cần phải được cung cấp với chức năng xác minh.

49
00:04:52,225 --> 00:04:55,210
Bên trong chức năng này, chúng tôi sẽ xác minh người dùng.

50
00:04:55,210 --> 00:04:59,090
Chức năng xác minh này sẽ được gọi với tên người dùng và mật khẩu

51
00:04:59,090 --> 00:05:03,380
hộ chiếu sẽ trích xuất từ yêu cầu đến của chúng tôi.

52
00:05:03,380 --> 00:05:09,620
Bây giờ trong yêu cầu đến cho LocalStrategy tên người dùng và mật khẩu

53
00:05:09,620 --> 00:05:16,800
nên được cung cấp trong nội dung của tin nhắn dưới dạng một chuỗi Json.

54
00:05:17,680 --> 00:05:21,560
Một lần nữa bởi vì chúng tôi đang làm cơ thể-phân tích cú pháp để sẽ được

55
00:05:21,560 --> 00:05:24,500
thêm vào cơ thể của tin nhắn và sau đó từ đó hộ chiếu

56
00:05:24,500 --> 00:05:29,000
chúng tôi sẽ lấy mà và sau đó sử dụng đó và cung cấp tên người dùng và mật khẩu

57
00:05:29,000 --> 00:05:34,775
như các tham số để xác minh chức năng mà chúng tôi sẽ cung cấp cho LocalStrategy.

58
00:05:34,775 --> 00:05:37,565
Vì chúng tôi đang sử dụng plugin mongoose hộ chiếu, plugin

59
00:05:37,565 --> 00:05:44,915
mongoose tự thêm chức năng này được gọi là user.authenticate.

60
00:05:44,915 --> 00:05:51,495
Vì vậy, nó thêm phương pháp này vào giản đồ người dùng và mô hình.

61
00:05:51,495 --> 00:05:55,775
Chúng tôi sẽ cung cấp rằng như là chức năng

62
00:05:55,775 --> 00:06:00,350
mà sẽ cung cấp xác thực cho LocalStrategy.

63
00:06:00,350 --> 00:06:02,540
Bây giờ nếu bạn không sử dụng

64
00:06:02,540 --> 00:06:06,875
hộ chiếu địa phương-mongoose khi bạn thiết lập một plugin mongoose mà chúng tôi đã thực hiện,

65
00:06:06,875 --> 00:06:08,060
nếu bạn không sử dụng nó,

66
00:06:08,060 --> 00:06:12,540
sau đó bạn cần phải viết chức năng xác thực người dùng của riêng bạn ở đây.

67
00:06:12,540 --> 00:06:15,720
Trong bài giảng trước đó,

68
00:06:15,720 --> 00:06:18,860
tôi đã chỉ cho bạn một chức năng xác thực người dùng đơn giản

69
00:06:18,860 --> 00:06:22,580
có thể được sử dụng ở đây nhưng một trong đó được

70
00:06:22,580 --> 00:06:25,610
cung cấp bởi mô-đun hộ chiếu địa phương và mongoose là

71
00:06:25,610 --> 00:06:30,200
toàn diện hơn và vì vậy đó là những gì chúng tôi sẽ sử dụng trong ứng dụng của chúng tôi.

72
00:06:30,200 --> 00:06:36,365
Cũng vì chúng tôi vẫn đang sử dụng phiên để theo dõi người dùng trong ứng dụng của

73
00:06:36,365 --> 00:06:43,775
chúng tôi, chúng tôi cần phải serialize và deserialize người dùng.

74
00:06:43,775 --> 00:06:47,345
Vì vậy, điều này về cơ bản lấy thông tin người dùng.

75
00:06:47,345 --> 00:06:54,815
Bây giờ nhớ lại rằng các chứng thực hộ chiếu sẽ gắn req.user hoặc tài sản người dùng để

76
00:06:54,815 --> 00:06:58,715
thông báo yêu cầu và do

77
00:06:58,715 --> 00:07:04,610
đó thông tin người dùng sẽ được serialized và deserialized thực hiện bằng cách sử dụng

78
00:07:04,610 --> 00:07:17,295
câu nói này serialize người dùng và hộ chiếu deserialize người dùng.

79
00:07:17,295 --> 00:07:22,235
Ngoài ra chúng ta sẽ nói người dùng deserialize user.

80
00:07:22,235 --> 00:07:27,920
Hai chức năng này họ serialize người dùng và deserialize người dùng được cung cấp

81
00:07:27,920 --> 00:07:35,030
trên giản đồ người dùng và mô hình bằng cách sử dụng plugin hộ chiếu địa phương-mongoose ở đây.

82
00:07:35,030 --> 00:07:38,240
Vì vậy, điều này sẽ chăm sóc bất cứ điều gì nó được yêu cầu cho sự

83
00:07:38,240 --> 00:07:42,860
hỗ trợ của chúng tôi cho các phiên trong hộ chiếu.

84
00:07:42,860 --> 00:07:48,375
Vì vậy, một khi chúng tôi đã hoàn thành bản cập nhật này cho các tập tin authenticate.js,

85
00:07:48,375 --> 00:07:54,200
tập tin này sẽ yêu cầu bất cứ nơi nào nó là cần thiết cho chúng tôi để sử dụng trong xác thực của chúng tôi.

86
00:07:54,200 --> 00:07:57,695
Tiếp theo đi đến tệp users.js,

87
00:07:57,695 --> 00:07:59,795
trong tệp users.js,

88
00:07:59,795 --> 00:08:04,170
trước tiên chúng ta sẽ nhập hộ chiếu.

89
00:08:04,170 --> 00:08:09,525
Vì vậy, chúng tôi sẽ nói var hộ chiếu yêu cầu hộ chiếu.

90
00:08:09,525 --> 00:08:16,100
Sau đó, bởi vì chúng tôi đang sử dụng plugin mongoose cục bộ hộ chiếu,

91
00:08:16,100 --> 00:08:20,525
plugin mongoose tự cung cấp một số chỉ số

92
00:08:20,525 --> 00:08:25,380
hữu ích cho chúng tôi để sử dụng trong quá trình đăng ký và trong quá trình đăng nhập.

93
00:08:25,380 --> 00:08:29,030
Vì vậy, đi xuống đến bài đăng bộ định tuyến ở đây,

94
00:08:29,030 --> 00:08:34,120
plugin mongoose cung cấp cho chúng ta một phương pháp được gọi là register,

95
00:08:34,120 --> 00:08:37,275
trên lược đồ người dùng và mô hình.

96
00:08:37,275 --> 00:08:44,460
Vì vậy, chúng tôi sẽ nói đăng ký người dùng và điều này sẽ được biến thành nói người dùng mới.

97
00:08:44,460 --> 00:08:51,035
Người dùng mới này là tham số đầu tiên mà thanh ghi mất

98
00:08:51,035 --> 00:08:58,245
và tham số thứ hai là mật khẩu cơ thể req.

99
00:08:58,245 --> 00:09:05,440
Vì vậy, mật khẩu mà đi kèm như là một tham số thứ hai trong cơ thể của thông điệp.

100
00:09:05,440 --> 00:09:08,460
Vì vậy, nhớ lại rằng tên người dùng và mật khẩu được thông qua

101
00:09:08,460 --> 00:09:12,020
khi bạn đăng ký trong nội dung của tin nhắn.

102
00:09:12,020 --> 00:09:14,255
Bây giờ, trong trường hợp này,

103
00:09:14,255 --> 00:09:19,855
điều này sẽ dẫn đến một chức năng gọi lại cung cấp lỗi

104
00:09:19,855 --> 00:09:25,825
và người dùng là hai giá trị gọi lại ở đây và không may,

105
00:09:25,825 --> 00:09:28,790
điều này sau đó không hoạt động trong trường hợp này.

106
00:09:28,790 --> 00:09:33,045
Vì vậy, tôi sẽ phải cắt điều này ra từ đây và sau đó

107
00:09:33,045 --> 00:09:39,415
thay vì xử lý mà bên trong phương pháp callback này ở đây.

108
00:09:39,415 --> 00:09:43,820
Vì vậy, hãy để tôi chỉ thụt lề này,

109
00:09:43,820 --> 00:09:48,060
để nó dễ dàng hơn để xem mã ở đây.

110
00:09:48,060 --> 00:09:51,830
Vì vậy, tôi sẽ nói, đăng ký người dùng và tham số đầu tiên là

111
00:09:51,830 --> 00:09:53,630
một người dùng mới được tạo ra với

112
00:09:53,630 --> 00:09:57,590
việc cung cấp tên người dùng ở đây và tham số thứ hai là mật khẩu,

113
00:09:57,590 --> 00:10:02,550
và sau đó kết quả là chức năng gọi lại này sẽ gọi,

114
00:10:02,550 --> 00:10:06,100
chúng ta sẽ nói người dùng lỗi ở đây.

115
00:10:06,100 --> 00:10:11,260
Trong trường hợp này, chúng ta phải chỉnh sửa mã một chút ở đây.

116
00:10:11,260 --> 00:10:14,620
Vì vậy, trong phần đầu tiên,

117
00:10:14,620 --> 00:10:21,850
chúng ta sẽ nói nếu lỗi,

118
00:10:21,850 --> 00:10:28,150
sau đó họ sẽ phải gửi trả lời một cách rõ ràng.

119
00:10:28,150 --> 00:10:34,945
Vì vậy, tôi sẽ sao chép hai cái này ở đây.

120
00:10:34,945 --> 00:10:37,670
Vì vậy, chúng tôi sẽ nói, nếu lỗi,

121
00:10:37,740 --> 00:10:40,860
sau đó res mã trạng thái,

122
00:10:40,860 --> 00:10:46,970
chúng tôi sẽ thiết lập này để 500 và thiết lập tiêu đề loại nội dung và sau đó,

123
00:10:46,970 --> 00:10:52,520
chúng tôi sẽ thiết lập res json và sau đó lỗi, lỗi.

124
00:10:52,520 --> 00:10:56,790
Vì vậy, chúng tôi sẽ xây dựng một đối tượng json với

125
00:10:56,790 --> 00:11:01,590
các lỗi như là giá trị cho các thuộc tính lỗi trong đó và sau đó gửi lại này.

126
00:11:01,590 --> 00:11:06,145
Vì vậy, đây là cách bạn sẽ xử lý các lỗi trong trường hợp này.

127
00:11:06,145 --> 00:11:11,110
Nếu không, những gì chúng tôi làm ở đây là chúng tôi sẽ

128
00:11:11,110 --> 00:11:18,970
nói hộ chiếu xác thực địa phương.

129
00:11:18,970 --> 00:11:23,810
Vì vậy, nếu chúng ta sẽ sử dụng hộ chiếu để xác thực người dùng một lần nữa.

130
00:11:23,810 --> 00:11:25,930
Vì vậy, chúng tôi sẽ nói hộ chiếu xác thực địa phương.

131
00:11:25,930 --> 00:11:28,820
Để đảm bảo rằng việc đăng ký người dùng đã thành công.

132
00:11:28,820 --> 00:11:33,145
chúng tôi sẽ cố gắng xác thực cùng một người dùng mà chúng tôi vừa đăng ký và

133
00:11:33,145 --> 00:11:38,335
ở đây chúng tôi sẽ nói req res và điều này

134
00:11:38,335 --> 00:11:48,355
sẽ trở lại như là một giá trị thứ ba mà chức năng bên trong đó,

135
00:11:48,355 --> 00:11:52,300
chúng tôi sẽ gửi lại trả lời cho khách hàng của chúng tôi.

136
00:11:52,300 --> 00:12:01,140
Vậy chúng ta sẽ nói. Để tôi gỡ bỏ cái này và sau đó thêm nó vào đây.

137
00:12:01,140 --> 00:12:03,190
Bây giờ chúng ta có thể loại bỏ điều này sau

138
00:12:03,190 --> 00:12:11,070
đó, bởi vì điều này sau đó là không cần thiết cho chúng tôi và đây là đóng của đăng ký người dùng.

139
00:12:11,070 --> 00:12:12,990
Trong phần khác,

140
00:12:12,990 --> 00:12:16,810
chúng tôi sẽ làm hộ chiếu xác thực địa phương.

141
00:12:16,970 --> 00:12:19,510
Nhìn vào cú pháp ở đây.

142
00:12:19,510 --> 00:12:23,425
Vì vậy, đây là hộ chiếu xác thực địa phương và sau đó,

143
00:12:23,425 --> 00:12:29,325
chúng ta phải gọi chức năng này ở đây rằng các tham số req,

144
00:12:29,325 --> 00:12:35,245
res và thứ ba là một chức năng gọi lại ở đây.

145
00:12:35,245 --> 00:12:42,275
Vì vậy, đây là cách này được thực hiện bởi vì hộ chiếu mong bạn làm theo cách này.

146
00:12:42,275 --> 00:12:46,495
Trong đây, chúng tôi sẽ thiết lập req res mã trạng thái là 200,

147
00:12:46,495 --> 00:12:49,930
thiết lập tiêu đề nội dung ứng dụng json và sau đó chúng tôi sẽ

148
00:12:49,930 --> 00:12:59,410
res json đăng ký trạng thái thành công và chúng tôi sẽ không vượt qua giá trị người dùng ở đây.

149
00:12:59,410 --> 00:13:03,240
Thay vào đó, những gì tôi sẽ làm là tôi sẽ

150
00:13:03,240 --> 00:13:10,695
đặt một lá cờ gọi là thành công ở đây thành sự thật ở đây.

151
00:13:10,695 --> 00:13:15,620
Bây giờ theo cách này, về phía khách hàng của chúng tôi khi json này được nhận,

152
00:13:15,620 --> 00:13:20,550
khách hàng chỉ có thể trích xuất tài sản thành công và sau đó kiểm tra xem nó có đúng

153
00:13:20,550 --> 00:13:25,695
hay không để nhanh chóng kiểm tra xem đăng ký thành công hay không.

154
00:13:25,695 --> 00:13:32,000
Vì vậy, đây là cách chúng tôi sẽ xử lý quá trình đăng ký người dùng ở đây.

155
00:13:32,000 --> 00:13:35,470
Vì vậy, hãy chú ý làm thế nào mã đã đơn giản hóa đáng kể.

156
00:13:35,470 --> 00:13:38,924
Nếu người dùng không đăng ký đúng cách,

157
00:13:38,924 --> 00:13:45,665
thì điều này sẽ gửi lại lỗi một cách thích hợp và xác thực cũng sẽ không thành công.

158
00:13:45,665 --> 00:13:51,115
Vì vậy, cả hai trường hợp, bạn sẽ bắt gặp tình huống khi xác thực người dùng không thành công.

159
00:13:51,115 --> 00:13:56,270
Bây giờ, quá trình đăng nhập chính nó cũng được đơn giản hóa đáng kể.

160
00:13:56,270 --> 00:14:01,650
Vì vậy, chúng ta không cần phải làm tất cả điều này trong lộ trình đăng nhập ở đây.

161
00:14:01,650 --> 00:14:07,220
Vì vậy, tôi sẽ loại bỏ tất cả các mã này và tuyến đăng nhập này trở nên đơn giản hóa ở đây.

162
00:14:07,220 --> 00:14:14,365
Bây giờ cho các tuyến đăng nhập- cho các bài đăng bộ định tuyến khi chúng tôi làm điều đó

163
00:14:14,365 --> 00:14:19,150
ở đây, ở đây chúng tôi cũng mong đợi tên người dùng và mật khẩu được bao gồm

164
00:14:19,150 --> 00:14:24,240
trong cơ thể của bài đăng tin nhắn đang đến cô ấy.

165
00:14:24,240 --> 00:14:32,030
Không giống như trường hợp trước đó mà chúng tôi đã bao gồm điều này trong tiêu đề ủy quyền,

166
00:14:32,030 --> 00:14:37,865
ở đây chúng tôi mong đợi điều này được bao gồm trong nội dung của tin nhắn gửi đến.

167
00:14:37,865 --> 00:14:47,730
Vì vậy, để xác thực, chúng tôi sẽ chỉ đơn giản là nói hộ chiếu xác thực và chúng tôi sẽ nói địa phương ở đây.

168
00:14:47,730 --> 00:14:52,320
Vì vậy, đây sẽ là cuộc gọi thứ hai ở đây.

169
00:14:52,320 --> 00:14:55,360
Vì vậy, đây là phần mềm trung gian thứ hai ở đây mà chúng tôi sẽ cắt.

170
00:14:55,360 --> 00:15:01,690
Vì vậy, khi bài đăng bộ định tuyến đi vào điểm cuối đăng nhập,

171
00:15:01,690 --> 00:15:06,095
trước tiên chúng tôi sẽ gọi hộ chiếu xác thực địa phương.

172
00:15:06,095 --> 00:15:09,660
Nếu điều này thành công thì điều này sẽ đến

173
00:15:09,660 --> 00:15:13,485
và chức năng tiếp theo sau sẽ được thực hiện.

174
00:15:13,485 --> 00:15:15,760
Nếu có bất kỳ lỗi trong việc xác thực,

175
00:15:15,760 --> 00:15:18,850
hộ chiếu này xác thực địa phương sẽ tự động

176
00:15:18,850 --> 00:15:24,210
gửi lại một câu trả lời cho khách hàng về sự thất bại của việc xác thực.

177
00:15:24,210 --> 00:15:26,190
Vì vậy, điều đó đã được thực hiện chăm sóc.

178
00:15:26,190 --> 00:15:33,345
Vì vậy, hãy lưu ý cách mã trong quá trình đăng nhập được đơn giản hóa đáng kể.

179
00:15:33,345 --> 00:15:36,565
Vì vậy, nếu điều này đi qua thành công,

180
00:15:36,565 --> 00:15:42,775
tôi chỉ cần kiểm tra req và res và ở đây những gì tôi sẽ làm

181
00:15:42,775 --> 00:15:49,665
là tôi sẽ chỉ đơn giản là gửi lại một tin nhắn cho phía khách hàng với thông tin này ở đây.

182
00:15:49,665 --> 00:15:53,775
Chúng tôi sẽ nói res mã trạng thái 200,

183
00:15:53,775 --> 00:16:02,145
res thiết lập tiêu đề nội dung loại ứng dụng json và res json thành công trạng thái đúng.

184
00:16:02,145 --> 00:16:13,010
Chúng tôi sẽ nói, bạn đã đăng nhập thành công.

185
00:16:13,010 --> 00:16:18,100
Đó là nó. Đây là sự thay đổi mà chúng ta sẽ thực hiện cho các tập tin users.js.

186
00:16:18,100 --> 00:16:21,275
Vì vậy, lưu ý làm thế nào, vì hộ chiếu người dùng,

187
00:16:21,275 --> 00:16:24,655
cả quá trình đăng ký và quá trình đăng nhập,

188
00:16:24,655 --> 00:16:28,205
mã đã đơn giản hóa đáng kể trong trường hợp này.

189
00:16:28,205 --> 00:16:34,465
Bây giờ chúng ta sẽ tiếp tục cập nhật tập tin app.js vào app.js bây giờ.

190
00:16:34,465 --> 00:16:37,555
Trong app.js ngay trên đây

191
00:16:37,555 --> 00:16:50,540
chúng tôi sẽ nhập hộ chiếu.

192
00:16:51,270 --> 00:16:55,310
Sau đó, chúng tôi sẽ

193
00:16:59,820 --> 00:17:07,120
nhập mô-đun xác thực mà chúng tôi vừa thực hiện.

194
00:17:07,120 --> 00:17:15,390
Chúng tôi sẽ nói var authenticate và trong các tập tin app.js xuống dưới đây sau khi phiên,

195
00:17:15,390 --> 00:17:25,320
chúng tôi thêm app.use (passport.initialize),

196
00:17:25,320 --> 00:17:32,100
và app.use (.session).

197
00:17:32,950 --> 00:17:37,810
Nếu người dùng được đăng nhập,

198
00:17:37,810 --> 00:17:42,945
sau đó những gì xảy ra là khi phiên được bắt đầu một lần nữa,

199
00:17:42,945 --> 00:17:47,095
bạn nhớ lại rằng khi bạn đăng nhập ở đây,

200
00:17:47,095 --> 00:17:48,735
bạn sẽ được đăng nhập vào đây,

201
00:17:48,735 --> 00:17:51,705
và một cuộc gọi đến hộ chiếu xác thực địa phương,

202
00:17:51,705 --> 00:17:53,730
khi điều này được thực hiện ở giai đoạn đăng nhập,

203
00:17:53,730 --> 00:17:56,460
hộ chiếu xác thực địa phương sẽ

204
00:17:56,460 --> 00:18:00,625
tự động thêm thuộc tính người dùng vào thư yêu cầu.

205
00:18:00,625 --> 00:18:03,415
Vì vậy, nó sẽ thêm req.user và sau đó,

206
00:18:03,415 --> 00:18:07,265
phiên hộ chiếu mà chúng tôi đã thực hiện ở đây sẽ tự động

207
00:18:07,265 --> 00:18:12,575
serialize thông tin người dùng và sau đó lưu trữ nó trong phiên.

208
00:18:12,575 --> 00:18:15,925
Vì vậy, và sau đó, bất cứ khi nào

209
00:18:15,925 --> 00:18:19,135
một yêu cầu đến từ phía khách hàng

210
00:18:19,135 --> 00:18:22,630
với cookie phiên đã có tại chỗ,

211
00:18:22,630 --> 00:18:29,250
sau đó điều này sẽ tự động tải req.user vào yêu cầu đến.

212
00:18:29,250 --> 00:18:32,735
Vì vậy, đó là cách phiên hộ chiếu chính nó được tổ chức.

213
00:18:32,735 --> 00:18:34,445
Vì vậy, một khi điều này được thực hiện,

214
00:18:34,445 --> 00:18:40,075
ngay cả mã xác thực của chúng tôi sẽ trở nên đơn giản hơn nhiều ở đây.

215
00:18:40,075 --> 00:18:42,400
Vì vậy, trong mã xác thực,

216
00:18:42,400 --> 00:18:49,450
chúng tôi sẽ chỉ đơn giản nói, nếu req.user.

217
00:18:49,450 --> 00:18:55,690
Vì vậy, req.user sẽ được nạp vào bởi phần mềm trung gian phiên hộ chiếu tự động,

218
00:18:55,690 --> 00:18:58,845
và vì vậy chúng tôi sẽ nói req.user.

219
00:18:58,845 --> 00:19:03,940
Nếu không req.user chúng ta sẽ nói var err, lỗi mới,

220
00:19:03,940 --> 00:19:09,495
bạn không được xác thực, và tất cả các thông điệp ở đây.

221
00:19:09,495 --> 00:19:15,410
Nếu không, xem phần khác cũng bây giờ được đơn giản hóa.

222
00:19:17,280 --> 00:19:20,010
Chúng ta sẽ nói khác tiếp theo.

223
00:19:20,010 --> 00:19:27,335
Vì vậy, mã xác thực của bạn trở nên đơn giản hơn rất nhiều bởi vì nếu req.user không có mặt,

224
00:19:27,335 --> 00:19:31,695
thì điều đó có nghĩa là xác thực đã không được thực hiện đúng như vậy,

225
00:19:31,695 --> 00:19:33,345
đó là lý do tại sao bạn chỉ ra lỗi.

226
00:19:33,345 --> 00:19:35,470
Nếu không, bạn sẽ được chứng thực.

227
00:19:35,470 --> 00:19:37,110
Nếu req.user có mặt,

228
00:19:37,110 --> 00:19:39,900
điều đó có nghĩa là hộ chiếu đã thực hiện việc xác thực và người dùng

229
00:19:39,900 --> 00:19:42,970
req.user được nạp vào tin nhắn yêu cầu,

230
00:19:42,970 --> 00:19:46,410
và do đó bạn chỉ có thể tiếp tục xuống xa hơn.

231
00:19:46,410 --> 00:19:49,815
Vì vậy, đó là sự thay đổi mà chúng ta cần phải thực hiện để app.js.

232
00:19:49,815 --> 00:19:57,775
Hãy lưu tất cả các thay đổi và sau đó nhìn vào ứng dụng trong Postman.

233
00:19:57,775 --> 00:20:01,385
Sau khi bạn lưu tất cả các thay đổi, khởi động lại máy chủ của bạn.

234
00:20:01,385 --> 00:20:02,600
Nếu máy chủ của bạn đang chạy,

235
00:20:02,600 --> 00:20:04,700
dừng nó, và sau đó khởi động lại máy chủ của bạn.

236
00:20:04,700 --> 00:20:07,680
Để tôi khởi động máy chủ của tôi.

237
00:20:08,160 --> 00:20:10,450
Một khi máy chủ đang hoạt động và chạy,

238
00:20:10,450 --> 00:20:13,900
chúng ta hãy truy cập Postman và thực hiện một vài yêu cầu.

239
00:20:13,900 --> 00:20:17,650
Đi đến Postman, bây giờ hãy để tôi cố gắng đăng ký một người dùng mới

240
00:20:17,650 --> 00:20:22,120
bằng cách thực hiện một bài đăng trên người dùng đăng ký điểm cuối.

241
00:20:22,120 --> 00:20:28,485
Khi đăng ký được đăng,

242
00:20:28,485 --> 00:20:31,850
bạn thấy rằng trong nội dung của thư trả lời nó nói,

243
00:20:31,850 --> 00:20:35,805
thành công đúng, và đăng ký trạng thái thành công.

244
00:20:35,805 --> 00:20:40,430
Vì vậy, người dùng đã được đăng ký thành công ở phía khách hàng.

245
00:20:40,430 --> 00:20:44,870
Vì vậy, bây giờ, hãy để tôi làm một đăng nhập của người dùng.

246
00:20:44,870 --> 00:20:50,000
Vì vậy, chúng tôi sẽ nói, “Đăng nhập”, và vẫn cung cấp

247
00:20:50,000 --> 00:20:55,765
tên người dùng và mật khẩu trong nội dung của tin nhắn ở đây.

248
00:20:55,765 --> 00:20:58,345
Vì vậy, khi tôi nhấp vào “Gửi”,

249
00:20:58,345 --> 00:21:02,550
bạn sẽ ngay lập tức nhận thấy rằng ở phía dưới,

250
00:21:02,550 --> 00:21:05,050
nó nói, thành công, đúng, và trạng thái,

251
00:21:05,050 --> 00:21:09,440
bạn đã đăng nhập và sau đó trong tiêu đề chính nó,

252
00:21:09,440 --> 00:21:13,515
bạn sẽ thấy một set-cookie đến bởi vì chúng tôi đang thiết lập phiên,

253
00:21:13,515 --> 00:21:17,390
và sau đó bạn thấy cookie tại chỗ đó.

254
00:21:17,390 --> 00:21:19,465
Khi bạn nhấp vào cookie,

255
00:21:19,465 --> 00:21:23,875
bạn sẽ thấy ID phiên làm việc tại chỗ ngay tại đó.

256
00:21:23,875 --> 00:21:26,980
Vì vậy, bây giờ chúng tôi đã đăng nhập thành công.

257
00:21:26,980 --> 00:21:35,630
Hãy gửi một yêu cầu đến Get localhost: 3000 món ăn điểm cuối.

258
00:21:35,630 --> 00:21:42,210
Bạn thấy rằng yêu cầu của bạn đã đi vào thành công và sau đó trả lời đã được gửi.

259
00:21:42,210 --> 00:21:43,350
Tất nhiên, tại thời điểm này,

260
00:21:43,350 --> 00:21:48,330
cơ sở dữ liệu của tôi trống vì vậy đó là lý do tại sao nó gửi lại một mảng trống

261
00:21:48,330 --> 00:21:54,530
từ trang web máy chủ khi tôi yêu cầu localhost:3000/món ăn.

262
00:21:55,050 --> 00:21:58,165
Điều này hoàn toàn ổn.

263
00:21:58,165 --> 00:22:00,610
Bây giờ hãy để tôi đăng xuất người dùng.

264
00:22:00,610 --> 00:22:02,995
Vì vậy, khi tôi đăng xuất người dùng, bây giờ,

265
00:22:02,995 --> 00:22:10,450
bạn sẽ nhận thấy rằng người dùng đã được đăng xuất và khi bạn nhấp vào các cookie,

266
00:22:10,450 --> 00:22:14,660
bạn sẽ nhận thấy rằng, cookie cho localhost đã biến mất.

267
00:22:14,660 --> 00:22:19,245
Vì vậy, bây giờ, nếu bạn cố gắng để làm một get trên localhost:món ăn,

268
00:22:19,245 --> 00:22:24,910
bạn thấy rằng câu trả lời nói,

269
00:22:24,910 --> 00:22:26,640
bạn không được xác thực.

270
00:22:26,640 --> 00:22:32,760
Hãy đăng nhập một lần nữa bằng cách thực hiện một bài đăng trên người dùng đăng nhập,

271
00:22:32,760 --> 00:22:36,290
và sau đó, bạn thấy rằng chúng tôi có thể đăng nhập thành công tại thời điểm này.

272
00:22:36,290 --> 00:22:37,830
Bạn cũng nhận thấy

273
00:22:37,830 --> 00:22:40,075
rằng, cookie mới đã được thiết lập ở đây.

274
00:22:40,075 --> 00:22:44,480
Sau đó, nếu chúng ta làm một get trên localhost: món ăn ở đây,

275
00:22:44,480 --> 00:22:46,465
bây giờ, điều này sẽ thành công.

276
00:22:46,465 --> 00:22:51,624
Kể từ khi chúng tôi đang sử dụng hộ chiếu địa phương mongoose như plugin mongoose, chúng ta

277
00:22:51,624 --> 00:22:55,790
cũng hãy đi và kiểm tra máy chủ MongoDB của chúng tôi để xem

278
00:22:55,790 --> 00:23:00,410
thông tin của người dùng thực sự được lưu trữ trong MongoDB của chúng tôi như thế nào.

279
00:23:00,410 --> 00:23:04,880
Vì vậy, trong thiết bị đầu cuối của

280
00:23:04,880 --> 00:23:06,970
bạn, bạn có thể mở gợn sóng Mongo,

281
00:23:06,970 --> 00:23:11,775
vì vậy hãy nói Mongo tại thiết bị đầu cuối và sau đó kết nối với máy chủ MongoDB của chúng tôi,

282
00:23:11,775 --> 00:23:16,500
và sau đó nói sử dụng Confect.

283
00:23:16,500 --> 00:23:26,285
Sau đó chúng ta sẽ nói db.users.find () .pretty () và sau đó in ra thông tin của người dùng.

284
00:23:26,285 --> 00:23:31,180
Vì vậy, khi bạn in ra thông tin của người dùng như bạn thấy ở đây,

285
00:23:31,180 --> 00:23:35,235
có một người dùng mà chúng tôi đã đăng ký trước đó.

286
00:23:35,235 --> 00:23:40,840
Vì vậy, bạn sẽ thấy rằng hồ sơ của người dùng chứa ID đối tượng và sau đó,

287
00:23:40,840 --> 00:23:42,665
tên người dùng xuống dưới đây,

288
00:23:42,665 --> 00:23:46,060
và cờ quản trị đó là sai và sau đó,

289
00:23:46,060 --> 00:23:53,720
cũng nhận thấy rằng thay vì lưu trữ mật khẩu chính nó những gì các

290
00:23:53,720 --> 00:23:57,515
plugin mongoose hộ chiếu địa phương Mông Cổ làm là nó lưu trữ

291
00:23:57,515 --> 00:24:01,865
giá trị muối của nó ở đây và một giá trị băm ở đây.

292
00:24:01,865 --> 00:24:08,655
Bây giờ, những gì plugin của Mongo làm là nó sẽ sử dụng muối như một cách để

293
00:24:08,655 --> 00:24:15,990
mã hóa mật khẩu và cài đặt mật khẩu băm trong trường băm này ở đây.

294
00:24:15,990 --> 00:24:17,980
Vì vậy, khi bạn cố gắng đăng nhập,

295
00:24:17,980 --> 00:24:23,130
nó sẽ áp dụng cùng một chuyển đổi cho mật khẩu đến,

296
00:24:23,130 --> 00:24:27,330
và sau đó cố gắng để phù hợp với nó với giá trị băm này được lưu trữ ở đây.

297
00:24:27,330 --> 00:24:29,580
Vì vậy, bạn có thể thấy rằng trong cơ sở dữ liệu chính nó,

298
00:24:29,580 --> 00:24:32,855
mật khẩu không được lưu trữ trực tiếp bên trong

299
00:24:32,855 --> 00:24:38,280
giá trị băm của mật khẩu được băm bằng cách sử dụng phím muối này ở đây,

300
00:24:38,280 --> 00:24:39,435
mà chúng ta thấy ở đây,

301
00:24:39,435 --> 00:24:42,780
được lưu trữ trong hồ sơ đó.

302
00:24:42,780 --> 00:24:47,440
Vì vậy, đó là cách plugin Mongoose hộ chiếu địa phương cho phép chúng tôi

303
00:24:47,440 --> 00:24:53,905
lưu trữ thông tin người dùng trong cơ sở dữ liệu của chúng tôi.

304
00:24:53,905 --> 00:24:58,680
Với sự hiểu biết nhanh chóng này về cách hộ chiếu, hộ chiếu địa phương

305
00:24:58,680 --> 00:25:02,590
và hộ chiếu địa phương Mongoose giúp chúng tôi đơn giản hóa

306
00:25:02,590 --> 00:25:09,390
chiến lược địa phương cho tên người dùng và mật khẩu trong ứng dụng của chúng tôi.

307
00:25:09,390 --> 00:25:11,660
Chúng tôi hoàn thành bài tập này.

308
00:25:11,660 --> 00:25:18,390
Đây là thời điểm tốt để bạn thực hiện một cam kết Git với hộ chiếu tin nhắn.