1
00:00:00,000 --> 00:00:04,649
[MUSIC]

2
00:00:04,649 --> 00:00:08,820
Trong bài học trước, chúng tôi đã học được về xác thực cơ bản.

3
00:00:08,820 --> 00:00:14,398
Chúng tôi thấy rằng trong xác thực cơ bản, khách hàng sẽ phải tiếp tục

4
00:00:14,398 --> 00:00:19,720
thêm một cách rõ ràng trong trường ủy quyền có chứa tên người dùng và

5
00:00:19,720 --> 00:00:24,100
mật khẩu cho mọi yêu cầu mà khách hàng gửi đến phía máy chủ.

6
00:00:24,100 --> 00:00:27,750
Bây giờ điều đó là hoàn toàn tốt cho xác thực đơn giản.

7
00:00:27,750 --> 00:00:33,520
Cookie là một cơ chế khác được cung cấp cho phép máy chủ của bạn

8
00:00:33,520 --> 00:00:38,700
để có thể mong đợi các khách hàng để lưu trữ một số thông tin về phía khách hàng và

9
00:00:38,700 --> 00:00:43,370
bao gồm thông tin đó một cách rõ ràng trong mỗi yêu cầu đi.

10
00:00:43,370 --> 00:00:47,360
Vì vậy, thay vì bao gồm tên người dùng và

11
00:00:47,360 --> 00:00:53,710
mật khẩu mã hóa cơ sở 64 của bạn như chúng tôi đã làm trong xác thực cơ bản, sử dụng cookie,

12
00:00:53,710 --> 00:00:58,130
máy chủ của bạn có thể thiết lập một mảnh thông tin rõ ràng ở phía khách hàng

13
00:00:58,130 --> 00:01:02,520
mà sau đó sẽ được bao gồm trong mỗi yêu cầu gửi đi từ phía khách hàng.

14
00:01:03,750 --> 00:01:08,740
Bây giờ mở rộng này hơn nữa, nếu máy chủ của bạn muốn theo dõi thông tin về

15
00:01:08,740 --> 00:01:15,180
khách hàng của bạn, sau đó máy chủ có thể thiết lập một cách rõ ràng một cơ chế theo dõi phiên.

16
00:01:15,180 --> 00:01:20,720
Bây giờ, cookie nhỏ và không thể lưu trữ rất nhiều thông tin trong đó,

17
00:01:20,720 --> 00:01:25,230
và điều này tất nhiên không thể được bao gồm trong yêu cầu đi.

18
00:01:25,230 --> 00:01:28,010
Cookie có thể bao gồm một số thông tin cơ bản

19
00:01:28,010 --> 00:01:31,850
trong tiêu đề của yêu cầu gửi đi từ máy khách.

20
00:01:31,850 --> 00:01:37,010
Bây giờ, nếu chúng ta muốn nhiều thông tin hơn để được theo dõi về một khách hàng

21
00:01:37,010 --> 00:01:42,420
ở phía máy chủ, sau đó express essions cho phép chúng ta làm điều đó.

22
00:01:42,420 --> 00:01:45,140
Chúng ta hãy nghiên cứu thêm về cookie và

23
00:01:45,140 --> 00:01:49,260
phiên Express trong một chút chi tiết hơn trong bài học này và

24
00:01:49,260 --> 00:01:54,380
cũng tìm hiểu thêm về chúng trong các bài tập theo sau bài giảng này.

25
00:01:56,640 --> 00:01:59,340
Vậy cookie HTTP là gì?

26
00:01:59,340 --> 00:02:04,070
Cookie HTTP, như tôi đã đề cập, là một phần nhỏ của dữ liệu được gửi

27
00:02:04,070 --> 00:02:07,610
từ một máy chủ web và được lưu trữ ở phía khách hàng.

28
00:02:07,610 --> 00:02:12,030
Bây giờ, hầu như tất cả các trình duyệt đều có khả năng hỗ trợ

29
00:02:12,030 --> 00:02:16,850
lưu trữ cookie ở phía máy khách và tự động bao gồm chúng

30
00:02:16,850 --> 00:02:21,590
trong yêu cầu khi yêu cầu được gửi đến một máy chủ cụ thể.

31
00:02:21,590 --> 00:02:27,127
Vì vậy, mỗi yêu cầu tiếp theo từ

32
00:02:27,127 --> 00:02:32,047
phía khách hàng sẽ bao gồm một tiêu đề mới trong đó

33
00:02:32,047 --> 00:02:37,141
với cookie trong tiêu đề yêu cầu.

34
00:02:37,141 --> 00:02:41,668
Bây giờ rõ ràng, nếu bạn đã nhìn thấy báo chí phổ biến đã nhận được một danh tiếng xấu

35
00:02:41,668 --> 00:02:45,450
ở đó, điều này, tất nhiên, không hoàn toàn không xứng đáng.

36
00:02:45,450 --> 00:02:52,880
Nhưng nó bị thổi bay theo tỷ lệ so với những gì thực sự là sự thật.

37
00:02:52,880 --> 00:02:57,760
Vì vậy, lấy bất cứ điều gì mà bạn đọc trên báo chí phổ biến về cookie và

38
00:02:57,760 --> 00:03:00,570
danh tiếng xấu của họ với một hạt muối.

39
00:03:00,570 --> 00:03:05,040
Cookies rất hữu ích để làm rất nhiều điều thú vị.

40
00:03:05,040 --> 00:03:09,880
Và chúng tôi có thể đảm bảo rằng cookie có thể

41
00:03:09,880 --> 00:03:15,070
được tích hợp đầy đủ tính toàn vẹn để chúng không thể bị thao tác bởi bất cứ ai ở giữa.

42
00:03:15,070 --> 00:03:21,640
Bây giờ làm thế nào để cài đặt cookie này bao gồm trong yêu cầu đi làm việc?

43
00:03:21,640 --> 00:03:25,060
Khi một khách hàng gửi một yêu cầu đến các trang web máy chủ,

44
00:03:25,060 --> 00:03:27,870
nếu khách hàng được xác thực trên trang web máy chủ.

45
00:03:27,870 --> 00:03:31,040
Ví dụ, bằng cách sử dụng xác thực cơ bản,

46
00:03:31,040 --> 00:03:34,950
sau đó máy chủ có thể đổi lại, thiết lập một cookie.

47
00:03:34,950 --> 00:03:39,120
Bây giờ, để thiết lập một cookie trên trang web của khách hàng, máy chủ sẽ bao gồm

48
00:03:39,120 --> 00:03:44,090
trong thông điệp phản hồi một tiêu đề với tiêu đề cookie đã gửi và

49
00:03:44,090 --> 00:03:46,300
cookie thực tế trong tiêu đề.

50
00:03:46,300 --> 00:03:50,460
Bây giờ khi khách hàng nhận được thông báo phản hồi từ máy

51
00:03:50,460 --> 00:03:54,500
chủ có chứa tiêu đề Set-Cookie, sau đó nó sẽ thiết lập cookie ở phía khách hàng. Như

52
00:03:54,500 --> 00:03:59,455
vậy mà mỗi yêu cầu tiếp theo đi từ phía khách hàng sẽ

53
00:03:59,455 --> 00:04:03,602
rõ ràng bao gồm một lĩnh vực tiêu đề gọi là cookie và

54
00:04:03,602 --> 00:04:06,846
tiêu đề thực tế có chứa như là giá trị,

55
00:04:06,846 --> 00:04:13,200
thông tin cookie đã được gửi bởi máy chủ trong thông báo phản hồi.

56
00:04:13,200 --> 00:04:17,880
Vì vậy, mỗi thông báo yêu cầu tiếp theo sẽ mang cookie này trong tiêu đề.

57
00:04:17,880 --> 00:04:22,470
Qua đó khi máy chủ nhận được thông báo yêu cầu này, nó có thể kiểm tra

58
00:04:22,470 --> 00:04:28,490
cookie và mặc dù yêu cầu này đến từ ai.

59
00:04:28,490 --> 00:04:33,612
Vì vậy, nó có thể nhận ra khách hàng bằng cách nhìn vào thông tin cookie.

60
00:04:33,612 --> 00:04:38,543
Vì vậy, đây là nơi cookie chứng minh rất hữu ích trong

61
00:04:38,543 --> 00:04:44,019
việc có thể gửi thông tin ủy quyền.

62
00:04:44,019 --> 00:04:48,050
Vì vậy, trong phục vụ bao gồm tên người dùng và mật khẩu như một phần của

63
00:04:48,050 --> 00:04:51,220
tiêu đề xác thực cơ bản trong mỗi yêu cầu đang diễn ra.

64
00:04:51,220 --> 00:04:55,120
Lần đầu tiên bạn xác thực chính mình, bạn gửi tên người dùng và mật khẩu

65
00:04:55,120 --> 00:04:57,140
của bạn và máy chủ thiết lập cookie về phía bạn.

66
00:04:57,140 --> 00:05:02,070
Sau đó, bạn chỉ cần bao gồm cookie trong yêu cầu đi.

67
00:05:02,070 --> 00:05:06,789
Bây giờ cookie cũng có thể có ngày hết hạn liên kết với chúng.

68
00:05:06,789 --> 00:05:11,641
Do đó, tại thời điểm đó, cookie sẽ được coi là đã hết hạn và

69
00:05:11,641 --> 00:05:13,440
sẽ không còn hiệu lực nữa.

70
00:05:13,440 --> 00:05:16,940
Vì vậy, đó là một cách để kiểm soát thời gian

71
00:05:16,940 --> 00:05:20,340
mà một ủy quyền là hợp lệ.

72
00:05:20,340 --> 00:05:24,350
Đến với Express chính nó, Express hỗ trợ cookie như thế nào?

73
00:05:24,350 --> 00:05:28,980
Bây giờ như chúng ta đã hiểu, Express sử dụng rất nhiều middleware.

74
00:05:28,980 --> 00:05:34,100
Đây là nơi mà một trong những middlewares được gọi là bộ phân tích cookie

75
00:05:34,100 --> 00:05:37,092
đến với ứng dụng của chúng tôi lúc tám.

76
00:05:37,092 --> 00:05:42,580
Bộ phân tích cookie cho phép máy chủ thiết lập một cookie trong tiêu đề phản hồi.

77
00:05:42,580 --> 00:05:48,350
Vì vậy, điều này được thực hiện bằng cách sử dụng res.cookie và tên và các

78
00:05:48,350 --> 00:05:54,160
giá trị nhất định và các tùy chọn như chúng ta sẽ thấy trong bài tập sau này.

79
00:05:54,160 --> 00:06:00,160
Và vì vậy cookie, khi chúng được gửi từ phía khách hàng, bao gồm trong

80
00:06:00,160 --> 00:06:05,980
thông báo yêu cầu đó được phân tích cú pháp ở phía máy chủ Express, sử dụng trình phân tích cú pháp cookie.

81
00:06:05,980 --> 00:06:08,383
Phần mềm trung gian phân tích cookie

82
00:06:08,383 --> 00:06:13,400
, khi cài đặt sẽ cho phép bạn phân tích các cookie đến.

83
00:06:13,400 --> 00:06:17,280
Và sau đó các cookie đến này sẽ được thêm

84
00:06:17,280 --> 00:06:22,260
vào yêu cầu như là một tiêu đề và có thể được kiểm tra ở phía máy chủ.

85
00:06:23,340 --> 00:06:26,580
Bây giờ để bảo vệ tính xác thực của cookie,

86
00:06:26,580 --> 00:06:30,070
bản thân cookie có thể được ký bởi máy chủ.

87
00:06:30,070 --> 00:06:35,120
Bây giờ khi máy chủ ký một cookie, máy chủ sử dụng một khóa bí mật,

88
00:06:35,120 --> 00:06:38,070
mà chỉ được biết đến phía máy chủ.

89
00:06:38,070 --> 00:06:42,510
Bây giờ nếu bạn biết bất cứ điều gì về bảo mật máy tính, mật mã và

90
00:06:42,510 --> 00:06:47,210
mã hóa, thì bạn sẽ hiểu những gì ký tên và khóa bí mật và

91
00:06:47,210 --> 00:06:49,290
khóa công khai và tất cả những điều này có ý nghĩa.

92
00:06:49,290 --> 00:06:53,990
Nếu bạn không, chỉ cần nó đủ để nói rằng một khóa bí mật là

93
00:06:53,990 --> 00:06:59,260
một chuỗi cụ thể mà chỉ có máy chủ biết và không ai khác biết.

94
00:06:59,260 --> 00:07:05,505
Vì vậy, khi một máy chủ mã hóa một cookie, nó sẽ sử dụng một khóa bí mật như một chữ ký và

95
00:07:05,505 --> 00:07:11,081
tạo ra những gì được gọi là mã xác thực thông điệp khóa-băm.

96
00:07:11,081 --> 00:07:16,450
Và bao gồm điều này trong cookie đó được gửi từ máy chủ đến phía khách hàng.

97
00:07:16,450 --> 00:07:21,210
HMAC này được tạo ra ở phía máy chủ chỉ có thể được thực hiện

98
00:07:21,210 --> 00:07:24,540
bởi máy chủ cụ thể đó biết rằng khóa bí mật.

99
00:07:24,540 --> 00:07:27,950
Bây giờ, vì máy chủ là một tài nguyên được bảo vệ, vì vậy

100
00:07:27,950 --> 00:07:33,670
chỉ có máy chủ mới biết được khóa bí mật và vì vậy nó rất dễ dàng để xác minh

101
00:07:33,670 --> 00:07:38,320
khi một cookie đã ký được gửi từ phía máy khách sang phía máy chủ.

102
00:07:38,320 --> 00:07:42,040
Vì vậy, khi cookie đã ký được gửi từ phía khách hàng đến phía máy chủ,

103
00:07:42,040 --> 00:07:44,540
cookie sẽ được thiết lập ở phía khách hàng, và

104
00:07:44,540 --> 00:07:50,310
sau đó tất cả các yêu cầu tiếp theo sẽ bao gồm cookie đã ký này ở phía khách hàng.

105
00:07:50,310 --> 00:07:54,290
Bây giờ phần mềm phân tích cú pháp cookie mà chúng tôi thiết lập với máy chủ Express của chúng tôi

106
00:07:54,290 --> 00:07:56,630
đã hỗ trợ cookie đã ký.

107
00:07:56,630 --> 00:08:02,480
Bây giờ cho điều này, trong bộ phân tích cú pháp cookie, bạn cũng sẽ cung cấp khóa bí mật làm

108
00:08:02,480 --> 00:08:07,120
tham số cho bộ phân tích cú pháp cookie khi bạn thiết lập phần mềm phân tích cú pháp cookie.

109
00:08:07,120 --> 00:08:11,970
Qua đó, tất cả các cookie sẽ được ký một cách thích hợp và sau đó gửi đi.

110
00:08:11,970 --> 00:08:17,240
Và khi cookie được phân tích cú pháp ở phía máy chủ trong

111
00:08:17,240 --> 00:08:22,660
thông báo yêu cầu đến, điều này sẽ được thêm vào thông báo yêu cầu như Req.signedCookies.

112
00:08:22,660 --> 00:08:27,980
Và sau đó bạn có thể có một trường cụ thể mà bạn có thể kiểm tra trong cookie đã ký.

113
00:08:27,980 --> 00:08:30,890
Cookies là cách rất hữu ích

114
00:08:30,890 --> 00:08:36,380
để khách hàng của bạn có thể gửi thông tin theo đó máy chủ của bạn nhận ra khách hàng.

115
00:08:36,380 --> 00:08:38,490
Nhưng tất nhiên, cookie có những hạn chế.

116
00:08:38,490 --> 00:08:42,370
Chúng là một kích thước cố định, vì vậy chúng không thể mã hóa rất nhiều thông tin

117
00:08:42,370 --> 00:08:47,090
về máy khách mà máy chủ của họ có thể truy xuất từ cookie.

118
00:08:47,090 --> 00:08:50,710
Cookie được sử dụng để chỉ nhắc nhở máy chủ về

119
00:08:50,710 --> 00:08:53,750
khách hàng nào đang gửi yêu cầu.

120
00:08:53,750 --> 00:08:58,311
Bây giờ nếu bạn muốn có một cơ chế phức tạp hơn để theo dõi thông tin về

121
00:08:58,311 --> 00:09:02,889
một khách hàng, sau đó ở phía máy chủ bạn có thể thiết lập những gì được gọi là phiên.

122
00:09:02,889 --> 00:09:09,180
Bây giờ, phiên là một cơ chế chung có sẵn với bất kỳ máy chủ.

123
00:09:09,180 --> 00:09:11,850
Đặc biệt, chúng ta sẽ xem xét chính Express và

124
00:09:11,850 --> 00:09:17,140
cách Express hỗ trợ quản lý phiên ở phía máy chủ.

125
00:09:17,140 --> 00:09:22,930
Cách nó hoạt động là phiên người dùng được thiết lập ở phía máy chủ.

126
00:09:22,930 --> 00:09:27,430
Vì vậy, phiên này chính nó là một sự kết hợp của

127
00:09:27,430 --> 00:09:32,270
một cookie và một ID phiên, và phía máy chủ theo dõi thông tin

128
00:09:32,270 --> 00:09:37,250
liên kết với ID phiên đó, hoặc lập chỉ mục bởi ID phiên đó.

129
00:09:37,250 --> 00:09:40,500
Bản thân thông tin phiên có thể có bất kỳ

130
00:09:40,500 --> 00:09:45,380
số lượng thông tin được theo dõi ở phía máy chủ, và được lập chỉ mục bởi cookie đó.

131
00:09:45,380 --> 00:09:50,910
Vì vậy, khi một khách hàng gửi một yêu cầu qua máy chủ, sau đó từ bên

132
00:09:50,910 --> 00:09:56,130
trong cookie ID phiên được lấy ra và được sử dụng như một chỉ mục vào phía máy chủ.

133
00:09:56,130 --> 00:09:56,964
Ví dụ,

134
00:09:56,964 --> 00:10:01,548
nếu bạn đang sử dụng một cơ sở dữ liệu phía máy chủ chỉ số đó sẽ là chỉ số chính vào

135
00:10:01,548 --> 00:10:05,456
cơ sở dữ liệu phía máy chủ cụ thể mà theo dõi các phiên.

136
00:10:05,456 --> 00:10:10,486
Và do đó, thông tin bổ sung về phiên đó có thể được truy xuất và

137
00:10:10,486 --> 00:10:13,761
sử dụng bởi máy chủ của bạn để đưa ra quyết định về cách

138
00:10:13,761 --> 00:10:17,380
nó phục vụ yêu cầu khách hàng đến.

139
00:10:17,380 --> 00:10:23,900
Bây giờ, theo mặc định, các phiên được lưu trữ trong bộ nhớ trên trang web máy chủ.

140
00:10:23,900 --> 00:10:28,870
Bây giờ rõ ràng, điều này có nghĩa là nếu máy chủ của bạn được khởi động lại, bộ nhớ của bạn

141
00:10:28,870 --> 00:10:33,260
sẽ bị xóa và do đó tất cả các thông tin phiên sẽ được biến mất hoàn toàn.

142
00:10:33,260 --> 00:10:37,350
Vì vậy, thay vào đó, nhiều máy chủ sẽ sử

143
00:10:37,350 --> 00:10:42,010
dụng một số hình thức lưu trữ vĩnh viễn, nơi thông tin phiên được theo dõi.

144
00:10:42,010 --> 00:10:45,360
Lưu trữ vĩnh viễn ở phía máy chủ có thể được thực hiện

145
00:10:45,360 --> 00:10:47,500
thông qua một số loại lưu trữ tập tin.

146
00:10:47,500 --> 00:10:53,460
Hoặc thậm chí tận dụng thực tế là bạn đã có một cơ sở dữ liệu ở phía máy chủ và

147
00:10:53,460 --> 00:10:56,170
hơn là lưu trữ thông tin phiên ở phía máy chủ.

148
00:10:56,170 --> 00:10:59,590
Ví dụ, trong MongoDB của bạn.

149
00:10:59,590 --> 00:11:05,620
Bây giờ trong bài tập sau, chúng ta sẽ xem xét việc sử dụng một lưu trữ tập tin để

150
00:11:05,620 --> 00:11:10,000
theo dõi thông tin phiên ở phía máy chủ.

151
00:11:10,000 --> 00:11:14,450
Một khía cạnh khác mà bạn cần phải chú ý đến là một thực tế rằng nếu bạn

152
00:11:14,450 --> 00:11:19,540
đang có một thực hiện máy chủ phân tán theo đó nhiều

153
00:11:19,540 --> 00:11:24,530
máy chủ đang hoạt động như máy chủ để phục vụ yêu cầu.

154
00:11:24,530 --> 00:11:28,310
Sau đó, máy chủ phân phối sẽ có thể truy cập thông tin phiên.

155
00:11:29,460 --> 00:11:32,470
Bất kỳ một trong những máy chủ này sẽ có thể truy cập thông tin phiên.

156
00:11:32,470 --> 00:11:36,480
Vì vậy, bạn sẽ cần một công cụ phiên phân phối ở phía máy chủ,

157
00:11:36,480 --> 00:11:40,780
để cho phép bạn hỗ trợ nhiều máy chủ nhân rộng.

158
00:11:40,780 --> 00:11:45,450
Đặc biệt điều này rất hữu ích khi chúng tôi đang cố gắng đảm bảo độ tin cậy

159
00:11:45,450 --> 00:11:46,870
của hoạt động máy chủ.

160
00:11:47,960 --> 00:11:52,630
Bây giờ một lần nữa, chúng tôi sẽ không nhận được quá nhiều chi tiết về những người trong

161
00:11:52,630 --> 00:11:58,190
khóa học đặc biệt này, chúng tôi sẽ dựa vào sự hiểu biết về cơ bản cách Express phiên làm việc.

162
00:11:59,710 --> 00:12:02,080
Đặc biệt đến Express và

163
00:12:02,080 --> 00:12:06,080
cách quản lý phiên được hỗ trợ trong Express.

164
00:12:06,080 --> 00:12:10,240
Express sử dụng phần mềm trung gian Express-session hỗ trợ

165
00:12:10,240 --> 00:12:14,760
việc sử dụng các phiên trong một máy chủ Express.

166
00:12:14,760 --> 00:12:18,110
Bây giờ bạn cài đặt các middleware express essions.

167
00:12:18,110 --> 00:12:21,140
Và trong bài tập, tôi sẽ sử dụng FileStore

168
00:12:21,140 --> 00:12:24,470
như một cách lưu trữ vĩnh viễn thông tin phiên.

169
00:12:24,470 --> 00:12:30,440
Và vì vậy chúng tôi cũng sẽ bao gồm các phiên tập tin cửa hàng nút mô-đun

170
00:12:30,440 --> 00:12:37,305
cho phép chúng tôi sử dụng các tập tin ở phía máy chủ để theo dõi các thông tin phiên.

171
00:12:37,305 --> 00:12:41,120
Chúng ta sẽ thấy các chi tiết trong bài tập sau.

172
00:12:41,120 --> 00:12:46,247
Và sau đó một khi chúng tôi làm điều đó phiên của bạn chính nó sẽ được thiết lập trên với

173
00:12:46,247 --> 00:12:51,690
máy chủ express mới bằng cách khai báo middleware ở đây như phiên mà mất

174
00:12:51,690 --> 00:12:57,390
một tập hợp nhất định các tùy chọn như một tham số ở đây.

175
00:12:57,390 --> 00:13:02,200
Các tùy chọn bao gồm tên cho phiên làm việc, vì vậy chúng tôi sẽ cung cấp cho phiên làm

176
00:13:02,200 --> 00:13:03,500
việc cho phiên làm việc cụ thể.

177
00:13:03,500 --> 00:13:07,500
Và sau đó bạn cũng sẽ cung cấp bí mật, một khóa bí mật được sử dụng để

178
00:13:07,500 --> 00:13:12,460
mã hóa cookie đã ký sẽ được gửi đến phía khách hàng.

179
00:13:12,460 --> 00:13:17,960
Và sau đó cũng thông tin bổ sung bao gồm SaveUnInitialized, mà

180
00:13:19,190 --> 00:13:24,625
sẽ là một lá cờ được sử dụng và cũng là một lá cờ resave được sử dụng.

181
00:13:24,625 --> 00:13:28,760
Chúng ta sẽ xem xét một số chi tiết của các tùy chọn này trong trang chiếu tiếp theo.

182
00:13:28,760 --> 00:13:31,390
Vì vậy, tất cả các tùy chọn này được chỉ định ở đây.

183
00:13:31,390 --> 00:13:36,945
Và nếu bạn là FileStore như là lưu trữ vĩnh viễn cho các phiên của bạn,

184
00:13:36,945 --> 00:13:42,130
sau đó chúng tôi sẽ tuyên bố rằng cũng trong các tùy chọn phiên ở đó.

185
00:13:42,130 --> 00:13:47,450
Vì vậy, đây là cách chúng tôi sẽ thiết lập một phiên ở phía máy chủ express

186
00:13:47,450 --> 00:13:49,510
bằng cách sử dụng phiên Express Middleware.

187
00:13:49,510 --> 00:13:55,540
Và chương trình Middleware Express-session, khi khách hàng gửi thông tin này,

188
00:13:55,540 --> 00:13:58,980
điều này sẽ được phân tích ở phía máy chủ và

189
00:13:58,980 --> 00:14:04,640
điều này sẽ dẫn đến một thuộc tính được gọi là một phiên được thêm vào đối tượng yêu cầu.

190
00:14:04,640 --> 00:14:09,460
Vì vậy, thông tin phiên này sẽ có thể truy cập trong

191
00:14:09,460 --> 00:14:11,505
đối tượng yêu cầu như req.session.

192
00:14:11,505 --> 00:14:16,221
Vì vậy, req.session sẽ mang thêm thông tin về phiên làm việc cụ thể

193
00:14:16,221 --> 00:14:18,325
cho khách hàng cụ thể đó.

194
00:14:18,325 --> 00:14:22,979
Bây giờ một khi phiên này, yêu cầu đến được phân tích bởi phần mềm trung gian phiên,

195
00:14:22,979 --> 00:14:28,957
thuộc tính req.session sẽ được thêm vào

196
00:14:28,957 --> 00:14:33,447
đối tượng tin nhắn yêu cầu đến mà express sử dụng.

197
00:14:33,447 --> 00:14:40,097
Vì vậy, sau khi phiên được phân tích cú pháp, trực tiếp phiên thuộc tính sẽ có sẵn và

198
00:14:40,097 --> 00:14:46,165
chúng tôi có thể kiểm tra mà quá để kiểm tra khách hàng đã gửi yêu cầu này.

199
00:14:46,165 --> 00:14:50,900
Khi họ thiết lập đối tượng phiên của họ trên trang web máy chủ,

200
00:14:50,900 --> 00:14:54,760
như chúng ta đã thấy, chúng ta có thể thiết lập các tùy chọn khác nhau cho trang web máy chủ đó.

201
00:14:54,760 --> 00:14:59,790
Cookie, các tùy chọn từ cookie ID phiên và giá trị mặc định cho

202
00:14:59,790 --> 00:15:04,275
cookie sẽ được hiển thị ở đây, đó là đường dẫn: '/',

203
00:15:04,275 --> 00:15:07,700
HttpOnly: true, secure: false, MaxAge: null.

204
00:15:07,700 --> 00:15:13,450
Vì vậy, đây sẽ là giá trị mặc định của cookie sẽ được lưu trữ trên gói

205
00:15:13,450 --> 00:15:17,680
và gửi đến phía khách hàng như một cookie đã ký.

206
00:15:17,680 --> 00:15:23,306
Và điều này sẽ được bao gồm trong mỗi yêu cầu đến từ trang web của khách hàng.

207
00:15:23,306 --> 00:15:28,080
Sau đó, genid là chức năng tạo ra ID phiên.

208
00:15:28,080 --> 00:15:33,830
Mặc định là sử dụng UUID của máy chủ chính nó như ID chung.

209
00:15:33,830 --> 00:15:38,720
Sau đó, cờ resave, nếu nó là đúng, buộc một phiên được lưu trở lại

210
00:15:38,720 --> 00:15:41,470
cửa hàng ngay cả khi nó không được sửa đổi bởi yêu cầu.

211
00:15:41,470 --> 00:15:44,230
Đôi khi yêu cầu đến có thể

212
00:15:45,580 --> 00:15:50,200
chứa một nhu cầu để sửa đổi thông tin phiên ở phía máy chủ.

213
00:15:50,200 --> 00:15:54,300
Và như vậy, nếu thông tin phiên được sửa đổi, nó sẽ phải được liên tục.

214
00:15:54,300 --> 00:15:56,290
Nếu không, thì bạn không cần phải kiên trì nó.

215
00:15:56,290 --> 00:16:00,454
Nhưng nếu bạn đặt cờ resave thành true, ngay cả khi thông tin phiên trên

216
00:16:00,454 --> 00:16:06,030
máy chủ không được sửa đổi bởi yêu cầu khách hàng đến, nó vẫn sẽ được lưu lại.

217
00:16:06,030 --> 00:16:09,980
Lá cờ tiếp theo mà chúng tôi xem xét là SaveUnInitialized.

218
00:16:09,980 --> 00:16:14,620
Nếu điều này là đúng, nó sẽ tạo ra một phiên mới được tạo ra mà không có bất kỳ sửa

219
00:16:14,620 --> 00:16:16,540
đổi nào được lưu trong cửa hàng phiên.

220
00:16:16,540 --> 00:16:21,164
Bây giờ chúng tôi sẽ thiết lập điều này để false theo mặc định, có nghĩa là chúng tôi chỉ sẽ

221
00:16:21,164 --> 00:16:25,008
theo dõi những phiên được ủy quyền trên máy chủ.

222
00:16:25,008 --> 00:16:30,955
Bây giờ bí mật, như chúng ta thấy, là khóa bí mật được sử dụng để ký cookie,

223
00:16:30,955 --> 00:16:36,310
và cửa hàng chính nó chỉ định phiên cửa hàng phiên được sử dụng.

224
00:16:36,310 --> 00:16:39,810
Mặc định là sử dụng trong bộ nhớ lưu trữ.

225
00:16:39,810 --> 00:16:42,950
Bạn có thể chỉ định lưu trữ tệp hoặc cửa hàng Mongo để

226
00:16:42,950 --> 00:16:46,000
lưu trữ thông tin phiên đó, v.v.

227
00:16:46,000 --> 00:16:51,590
Vì vậy, một khi bạn chỉ định thông tin này cho middleware phiên express của bạn sau đó

228
00:16:51,590 --> 00:16:57,350
phiên sẽ được thiết lập một cách thích hợp và do đó sẽ được theo dõi ở phía máy chủ.

229
00:16:57,350 --> 00:17:02,430
Mỗi yêu cầu khách hàng sau đó sẽ được ánh xạ đến thông tin phiên

230
00:17:02,430 --> 00:17:08,260
ở phía máy chủ khi yêu cầu khách hàng được phân tích bởi middleware phiên express.

231
00:17:08,260 --> 00:17:12,960
Và req.session sẽ được thêm vào đối tượng request.

232
00:17:14,150 --> 00:17:19,010
Với sự hiểu biết này về cookie và phiên diễn đạt, chúng ta hãy chuyển

233
00:17:19,010 --> 00:17:24,050
sang bài tập nơi sẽ xem xét cách chúng tôi sẽ sử dụng cookie trước tiên.

234
00:17:24,050 --> 00:17:29,360
Và sau đó chúng ta sẽ xem xét làm thế nào chúng ta sẽ sử dụng các phiên Express

235
00:17:29,360 --> 00:17:35,121
trong ứng dụng Express REST API của chúng tôi mà chúng tôi đã làm việc trên cho đến nay.

236
00:17:35,121 --> 00:17:40,109
[ NHẠC]