1
00:00:03,950 --> 00:00:06,540
Trong các bài học trước đây,

2
00:00:06,540 --> 00:00:10,260
chúng ta đã thấy nhiều chiến lược khác nhau để xác thực người dùng.

3
00:00:10,260 --> 00:00:12,555
Chúng tôi bắt đầu với xác thực cơ bản,

4
00:00:12,555 --> 00:00:16,500
và sau đó chuyển sang cookie và thể hiện phiên

5
00:00:16,500 --> 00:00:20,805
như một cách để xác thực và theo dõi người dùng.

6
00:00:20,805 --> 00:00:24,445
Trong bài học này, chúng ta sẽ xem xét Passport,

7
00:00:24,445 --> 00:00:29,450
một mô-đun nút làm cho xác thực khá dễ dàng,

8
00:00:29,450 --> 00:00:34,880
không phô trương và đơn giản để cấu hình trong ứng dụng của bạn.

9
00:00:34,880 --> 00:00:39,125
Passport là gì ngoài một middleware xác thực hỗ trợ

10
00:00:39,125 --> 00:00:43,330
các chiến lược khác nhau có thể được sử dụng để xác thực người dùng,

11
00:00:43,330 --> 00:00:47,505
bao gồm một chiến lược địa phương như sử dụng tên người dùng và mật khẩu,

12
00:00:47,505 --> 00:00:54,530
hoặc thậm chí xác thực bên thứ ba hoặc sử dụng OAuth hoặc OAuth 2.0,

13
00:00:54,530 --> 00:00:57,165
như sử dụng Facebook, Twitter,

14
00:00:57,165 --> 00:01:00,515
hoặc Google+, v.v.

15
00:01:00,515 --> 00:01:03,600
Chúng tôi sẽ xem xét một số chi tiết về Hộ chiếu,

16
00:01:03,600 --> 00:01:06,995
xác thực địa phương được hỗ trợ Hộ chiếu.

17
00:01:06,995 --> 00:01:10,520
Và trong bài tập sau đây,

18
00:01:10,520 --> 00:01:13,970
chúng tôi sẽ cập nhật ứng dụng của chúng tôi để sử dụng các

19
00:01:13,970 --> 00:01:19,025
mô-đun Passport và Passport-Local Node để kích hoạt.

20
00:01:19,025 --> 00:01:23,700
xác thực cục bộ bằng tên người dùng và mật khẩu.

21
00:01:23,920 --> 00:01:27,670
Vì vậy, như tôi đã nói một chút trước đó,

22
00:01:27,670 --> 00:01:33,185
Hộ chiếu là một middleware xác thực rất hữu ích cho các ứng dụng Node.js.

23
00:01:33,185 --> 00:01:36,675
Nó làm cho nó đơn giản hơn để thực hiện xác thực.

24
00:01:36,675 --> 00:01:39,274
Như chúng ta đã thấy trong các bài tập trước đó,

25
00:01:39,274 --> 00:01:45,215
xác thực liên quan đến rất nhiều mã lặp đi lặp lại và các nhiệm vụ lặp đi lặp lại xử lý lỗi

26
00:01:45,215 --> 00:01:48,440
và nghĩ ra cách kiểm tra

27
00:01:48,440 --> 00:01:52,580
xác thực người dùng và sau đó xác thực người dùng và vân vân.

28
00:01:52,580 --> 00:01:56,090
Tất cả điều này được đơn giản hóa trong Hộ chiếu bằng cách sử dụng

29
00:01:56,090 --> 00:02:00,040
các chiến lược khác nhau có thể được sử dụng để xác thực người dùng.

30
00:02:00,040 --> 00:02:04,220
Bạn có thể sử dụng một chiến lược địa phương ví dụ dựa trên việc

31
00:02:04,220 --> 00:02:09,440
đăng ký người dùng vào hệ thống của bạn bằng cách sử dụng một tên người dùng và mật khẩu,

32
00:02:09,440 --> 00:02:14,030
và sau đó xác thực chúng bằng cách sử dụng tên người dùng và mật khẩu.

33
00:02:14,030 --> 00:02:18,965
Passport cũng hỗ trợ xác thực dựa trên OpenID

34
00:02:18,965 --> 00:02:22,805
hoặc xác thực dựa trên OAuth hoặc OAuth 2.0,

35
00:02:22,805 --> 00:02:27,135
như được hỗ trợ bởi các trình xác thực của bên thứ ba như Facebook

36
00:02:27,135 --> 00:02:29,535
, Twitter, Google+, v.v.

37
00:02:29,535 --> 00:02:32,465
Chúng tôi cũng có thể sử dụng những gì được gọi là

38
00:02:32,465 --> 00:02:37,880
mã thông báo web JSON như một cách xác thực khác được gọi là xác thực dựa trên mã thông báo.

39
00:02:37,880 --> 00:02:42,485
Chúng ta sẽ xem xét xác thực dựa trên Token trong phần sau của bài học này.

40
00:02:42,485 --> 00:02:46,465
Ngoài ra, Hộ chiếu hỗ trợ các phiên.

41
00:02:46,465 --> 00:02:51,785
Như chúng ta đã thấy trong bài tập trước đó và bài học trước đó,

42
00:02:51,785 --> 00:02:55,640
phiên nhanh là một cách dễ dàng

43
00:02:55,640 --> 00:03:01,130
để theo dõi người dùng ở phía máy chủ và có thể phục vụ các yêu cầu đến từ khách hàng.

44
00:03:01,130 --> 00:03:03,330
Để sử dụng Hộ chiếu, tất nhiên,

45
00:03:03,330 --> 00:03:05,515
chúng tôi sẽ cài đặt mô-đun Hộ chiếu.

46
00:03:05,515 --> 00:03:08,175
Chúng tôi cũng sẽ, trong bài tập sau đây,

47
00:03:08,175 --> 00:03:11,195
cài đặt mô-đun Passport-Local để

48
00:03:11,195 --> 00:03:15,060
cung cấp chiến lược địa phương để xác thực người dùng.

49
00:03:15,060 --> 00:03:19,885
Việc sử dụng Hộ chiếu trong ứng dụng của chúng tôi là khá thẳng về phía trước.

50
00:03:19,885 --> 00:03:23,500
Trên các tuyến đường mà chúng tôi muốn thực hiện xác thực,

51
00:03:23,500 --> 00:03:27,110
chúng tôi chỉ cần xác định chứng thực hộ chiếu và sau đó xác

52
00:03:27,110 --> 00:03:33,320
định chiến lược xác thực cụ thể mà chúng tôi muốn sử dụng để xác thực người dùng.

53
00:03:33,320 --> 00:03:34,810
Như một ví dụ ở đây,

54
00:03:34,810 --> 00:03:36,590
bạn thấy rằng chúng tôi đang áp dụng

55
00:03:36,590 --> 00:03:41,950
một xác thực địa phương bằng cách nói chứng thực hộ chiếu và địa phương.

56
00:03:41,950 --> 00:03:46,530
Và vì vậy nó sử dụng chiến lược địa phương để xác thực người dùng.

57
00:03:46,530 --> 00:03:49,725
Nếu xác thực thành công,

58
00:03:49,725 --> 00:03:53,870
thì phần mềm trung gian sẽ chuyển sang bước tiếp theo,

59
00:03:53,870 --> 00:03:57,435
nơi chúng ta có thể tiếp tục xử lý yêu cầu đến.

60
00:03:57,435 --> 00:04:03,240
Vì vậy, sau khi hoàn thành việc xác thực thành công của hộ chiếu người dùng, Hộ

61
00:04:03,240 --> 00:04:09,300
chiếu chính nó thêm một tài sản người dùng vào thông báo yêu cầu.

62
00:04:09,300 --> 00:04:15,110
Vì vậy, req.user trở nên có sẵn cho chúng tôi với thông tin của người dùng trong đó,

63
00:04:15,110 --> 00:04:17,960
mà sau đó chúng tôi có thể sử dụng trong

64
00:04:17,960 --> 00:04:23,850
ứng dụng thể hiện của chúng tôi để xử lý các yêu cầu đến từ những người dùng cụ thể.

65
00:04:23,850 --> 00:04:30,110
Vì vậy, điều này dễ dàng giúp chúng tôi xác định khách hàng nào đã gửi yêu cầu đến

66
00:04:30,110 --> 00:04:32,840
ứng dụng của chúng tôi và do đó phục vụ

67
00:04:32,840 --> 00:04:37,525
yêu cầu phù hợp dựa trên danh tính của người dùng.

68
00:04:37,525 --> 00:04:40,140
Cùng với Hộ chiếu, chúng tôi sẽ cài đặt

69
00:04:40,140 --> 00:04:45,225
một mô-đun liên quan đến Hộ chiếu khác có tên Passport-Local.

70
00:04:45,225 --> 00:04:49,490
Passport-Local hỗ trợ một chiến lược được gọi là chiến

71
00:04:49,490 --> 00:04:52,190
lược địa phương để xác thực người dùng

72
00:04:52,190 --> 00:04:55,135
với sự kết hợp mật khẩu tên người dùng tiêu chuẩn.

73
00:04:55,135 --> 00:04:58,230
Vì vậy, chúng tôi thiết lập lược đồ người dùng,

74
00:04:58,230 --> 00:04:59,540
như chúng tôi đã làm trước đây,

75
00:04:59,540 --> 00:05:05,030
và sau đó sử dụng lược đồ người dùng hoặc mô hình để theo dõi tên người dùng và

76
00:05:05,030 --> 00:05:11,240
mật khẩu và sau đó Passport-Local phụ thuộc vào điều đó để xác minh tên người dùng và mật khẩu.

77
00:05:11,240 --> 00:05:12,815
Vì vậy, để cài đặt nó một lần nữa,

78
00:05:12,815 --> 00:05:13,985
là một mô-đun Node,

79
00:05:13,985 --> 00:05:19,490
chúng tôi cài đặt nó bằng cách sử dụng quy trình tiêu chuẩn để cài đặt mô-đun Passport-Local Node.

80
00:05:19,490 --> 00:05:23,075
Một khi mô-đun Passport-Local Node được cài đặt,

81
00:05:23,075 --> 00:05:30,750
sau đó chúng ta cần phải xác định chiến lược địa phương và cách nó thực sự được sử dụng trong Passport.

82
00:05:30,750 --> 00:05:33,465
Vì vậy, để xác định một chiến lược địa phương, chúng ta sẽ nói;

83
00:05:33,465 --> 00:05:39,290
passport.use, và vì vậy điều này sẽ cho phép chúng tôi xác định chiến lược địa phương để sử dụng.

84
00:05:39,290 --> 00:05:42,705
Vì vậy, khi cài đặt Passport-Local,

85
00:05:42,705 --> 00:05:46,900
chúng tôi sẽ tuyên bố một chiến lược địa phương mới và sau đó cung cấp

86
00:05:46,900 --> 00:05:53,725
chức năng xác minh tương ứng được sử dụng để xác minh người dùng.

87
00:05:53,725 --> 00:05:59,585
Nếu bạn đang sử dụng một MongoDB như cửa hàng back-end, sau đó,

88
00:05:59,585 --> 00:06:02,660
để giúp chúng tôi với chiến lược Passport-Local,

89
00:06:02,660 --> 00:06:06,045
có một mô-đun khác được gọi là Passport-Local Mongoose.

90
00:06:06,045 --> 00:06:10,150
Mô-đun Passport-Local Mongoose cung cấp

91
00:06:10,150 --> 00:06:15,290
một plugin Mongoose giúp đơn giản hóa việc đăng nhập tên người dùng và mật khẩu.

92
00:06:15,290 --> 00:06:19,250
Bằng cách cài đặt plugin Passport-Local Mongoose và

93
00:06:19,250 --> 00:06:23,330
sau đó sử dụng nó khi chúng tôi xác định lược đồ người dùng và mô hình,

94
00:06:23,330 --> 00:06:29,605
và do đó sử dụng sự hỗ trợ của mô-đun Passport-Local Mongoose,

95
00:06:29,605 --> 00:06:33,995
plugin mongoose này thêm vào tên người dùng và

96
00:06:33,995 --> 00:06:40,080
một cách được mã hóa để lưu trữ mật khẩu trong người dùng của chúng tôi mô hình.

97
00:06:40,080 --> 00:06:43,205
Việc mã hóa được thực hiện bằng cách sử dụng băm

98
00:06:43,205 --> 00:06:47,060
trên mật khẩu mà chúng tôi sử dụng để đăng ký người dùng,

99
00:06:47,060 --> 00:06:50,595
và bản thân băm sử dụng một trường muối.

100
00:06:50,595 --> 00:06:54,140
Vì vậy, nếu bạn biết bất cứ điều gì về mật mã học,

101
00:06:54,140 --> 00:06:57,620
trong mật mã học, muối là một chuỗi ngẫu nhiên được sử dụng để thực hiện

102
00:06:57,620 --> 00:07:02,135
các hoạt động băm trên mật khẩu để lưu trữ.

103
00:07:02,135 --> 00:07:07,590
Vì vậy, mật khẩu băm chính nó thực sự được lưu trữ trong cơ sở dữ liệu MongoDB của chúng tôi.

104
00:07:07,590 --> 00:07:09,815
Mật khẩu thực tế không được lưu trữ.

105
00:07:09,815 --> 00:07:14,420
Vì vậy, khi người dùng cố gắng xác thực bằng cách sử dụng tên người dùng và mật khẩu,

106
00:07:14,420 --> 00:07:16,820
mật khẩu sẽ được băm một lần nữa và sau đó so sánh với

107
00:07:16,820 --> 00:07:20,490
mật khẩu băm được lưu trữ trong cơ sở dữ liệu của chúng tôi và điều này được

108
00:07:20,490 --> 00:07:28,040
cung cấp bởi plugin Mongoose, Passport-Local Mongoose.

109
00:07:28,040 --> 00:07:32,690
Ngoài ra, Passport-Local Mongoose cũng bổ sung vào các phương pháp bổ sung

110
00:07:32,690 --> 00:07:37,535
rất hữu ích cho việc cấu hình chiến lược Passport-Local.

111
00:07:37,535 --> 00:07:43,095
Vì vậy, trong ứng dụng của chúng tôi khi chúng tôi xác định lược đồ người dùng và mô hình,

112
00:07:43,095 --> 00:07:46,030
chúng tôi sẽ nhập khẩu Passport-Local Mongoose và sau đó thêm

113
00:07:46,030 --> 00:07:49,495
vào như là plugin cho lược đồ người dùng.

114
00:07:49,495 --> 00:07:53,000
Mô-đun Passport-Local Mongoose này tự động

115
00:07:53,000 --> 00:07:56,240
như tôi đã nói thêm trường tên người dùng và cũng

116
00:07:56,240 --> 00:08:03,690
là trường lưu trữ mật khẩu băm bằng cách sử dụng một giá trị muối mà nó sử dụng để thực hiện băm,

117
00:08:03,690 --> 00:08:08,240
và cũng cung cấp các phương pháp bổ sung cho

118
00:08:08,240 --> 00:08:13,010
phép chúng tôi cấu hình chiến lược Passport-Local của chúng tôi.

119
00:08:13,010 --> 00:08:16,945
Nếu chúng ta đang sử dụng mô-đun Passport-Local Mongoose,

120
00:08:16,945 --> 00:08:19,185
thì chiến lược cục

121
00:08:19,185 --> 00:08:23,990
bộ, plugin Passport-Local Mongoose hỗ trợ trên

122
00:08:23,990 --> 00:08:30,020
mô hình người dùng một phương pháp xác thực sẽ tự động thực hiện việc xác thực.

123
00:08:30,020 --> 00:08:35,195
Trong slide trước đó tôi đã chỉ cho bạn cách chúng tôi sẽ thực hiện chiến lược địa phương.

124
00:08:35,195 --> 00:08:39,690
Bây giờ điều này được tự động cung cấp cho bạn bởi Passport-Local Mongoose

125
00:08:39,690 --> 00:08:44,285
bằng cách chỉ đơn giản là nói mới localstrategy user.authenticate.

126
00:08:44,285 --> 00:08:50,730
Sau đó, chúng ta không cần phải viết một cách rõ ràng mã xác thực cho chiến lược địa phương.

127
00:08:50,730 --> 00:08:55,445
Ngoài ra nếu bạn đang sử dụng phiên được hỗ trợ bởi hộ chiếu

128
00:08:55,445 --> 00:08:58,555
, sau đó, để hỗ trợ phiên,

129
00:08:58,555 --> 00:09:02,630
thông tin người dùng cần phải được serialized để

130
00:09:02,630 --> 00:09:06,840
được lưu trữ với thông tin phiên ở phía máy chủ và sau đó,

131
00:09:06,840 --> 00:09:08,690
khi yêu cầu đi vào,

132
00:09:08,690 --> 00:09:10,140
từ phiên ID,

133
00:09:10,140 --> 00:09:13,940
thông tin người dùng cần phải được deserialized để trích xuất

134
00:09:13,940 --> 00:09:20,160
thông tin người dùng từ thông tin phiên của chúng tôi được lưu trữ ở phía máy chủ.

135
00:09:20,160 --> 00:09:22,145
Bây giờ serialization và

136
00:09:22,145 --> 00:09:27,440
deserialization hoạt động này đã được hỗ trợ bởi Passport-Local Mongoose thông qua

137
00:09:27,440 --> 00:09:29,990
người dùng serialize và

138
00:09:29,990 --> 00:09:36,480
các phương pháp người dùng deserialize có sẵn từ Plugin Passport-Local Mongoose.

139
00:09:36,480 --> 00:09:38,095
Vì vậy, khi nhìn thấy điều này,

140
00:09:38,095 --> 00:09:42,680
bây giờ chúng ta sẽ thấy trong bài tập như thế nào dễ dàng để cấu hình

141
00:09:42,680 --> 00:09:48,120
chiến lược địa phương để xác thực người dùng sử dụng

142
00:09:48,120 --> 00:09:54,490
Passport, Passport-Local và Passport-Local Mongoose Node.