1
00:00:03,920 --> 00:00:07,970
Thời gian cho bài tập thứ ba trong khóa học này.

2
00:00:07,970 --> 00:00:13,110
Trong mô-đun này, chúng tôi đã tìm hiểu về xác thực người dùng rất nhiều chi tiết.

3
00:00:13,110 --> 00:00:14,705
Bây giờ, trong nhiệm vụ này,

4
00:00:14,705 --> 00:00:17,905
chúng tôi sẽ làm việc thêm về xác thực người dùng.

5
00:00:17,905 --> 00:00:22,965
Chúng tôi sẽ thêm một loại tài khoản khác được gọi là Quản trị viên.

6
00:00:22,965 --> 00:00:26,880
Tài khoản Admin là một tài khoản siêu có

7
00:00:26,880 --> 00:00:31,460
nhiều đặc quyền thực hiện các hoạt động khác nhau.

8
00:00:31,460 --> 00:00:37,410
Một tài khoản người dùng thông thường chỉ có thể thực hiện các thao tác nhất định trên máy chủ của chúng tôi.

9
00:00:37,410 --> 00:00:43,445
Tương tự, một yêu cầu chưa đăng ký đến từ một máy khách

10
00:00:43,445 --> 00:00:49,610
không đăng nhập chỉ có thể thực hiện các thao tác nhất định trên máy chủ của chúng tôi.

11
00:00:49,610 --> 00:00:52,400
Bây giờ, chúng tôi sẽ sửa đổi máy chủ của chúng tôi như vậy

12
00:00:52,400 --> 00:00:55,865
mà get các hoạt động có thể được thực hiện bởi bất cứ ai.

13
00:00:55,865 --> 00:01:00,350
Bạn không cần phải đăng nhập vào hệ thống để thực hiện các thao tác get trên

14
00:01:00,350 --> 00:01:06,110
các điểm cuối API còn lại khác nhau ngoại trừ việc gửi nhận xét.

15
00:01:06,110 --> 00:01:11,625
Đối với các thao tác còn lại trên các điểm cuối API còn lại,

16
00:01:11,625 --> 00:01:15,365
các thao tác POST put và delete,

17
00:01:15,365 --> 00:01:20,190
các thao tác này sẽ bị hạn chế chỉ được thực hiện bởi người dùng quản trị,

18
00:01:20,190 --> 00:01:23,780
một người dùng thông thường không thể thực hiện các thao tác này.

19
00:01:23,780 --> 00:01:30,215
Rõ ràng, bạn không muốn một người dùng bình thường gửi các món ăn mới, hoặc chương trình khuyến mãi,

20
00:01:30,215 --> 00:01:34,975
hoặc thông tin lãnh đạo, hoặc sửa đổi thông tin hiện có,

21
00:01:34,975 --> 00:01:37,780
hoặc thậm chí xóa các thông tin hiện có.

22
00:01:37,780 --> 00:01:45,290
Đây chỉ là đặc quyền của quản trị viên hệ thống cho máy chủ của chúng tôi.

23
00:01:45,290 --> 00:01:50,870
Ngoài ra, chúng tôi sẽ đảm bảo rằng một người dùng thông thường có thể

24
00:01:50,870 --> 00:01:56,010
đăng bình luận về các món ăn cụ thể, đó là chấp nhận được.

25
00:01:56,010 --> 00:02:03,015
Tương tự, một người dùng thông thường có thể cập nhật và xóa các nhận xét mà họ đã đăng.

26
00:02:03,015 --> 00:02:10,230
Người dùng khác hoặc thậm chí là người quản trị không thể cập nhật hoặc xóa nhận xét được đăng bởi người dùng khác.

27
00:02:10,230 --> 00:02:14,565
Vì vậy, đây là một hạn chế khác mà chúng tôi sẽ đặt trong máy chủ của chúng tôi.

28
00:02:14,565 --> 00:02:18,335
Bây giờ, chúng ta hãy đi trước và kiểm tra làm thế nào chúng ta sẽ đi về việc

29
00:02:18,335 --> 00:02:23,299
thực hiện điều này và làm thế nào chính xác máy chủ của chúng tôi thực hiện các hoạt động này.

30
00:02:23,299 --> 00:02:26,720
Trước hết, tôi sẽ minh họa cho bạn cách bạn

31
00:02:26,720 --> 00:02:31,240
tạo một tài khoản quản trị viên trong hệ thống của bạn.

32
00:02:31,240 --> 00:02:33,770
Bạn sẽ nhận ra rằng chúng tôi phải đi đằng sau

33
00:02:33,770 --> 00:02:37,325
hậu trường để tạo một tài khoản quản trị đơn giản bởi vì,

34
00:02:37,325 --> 00:02:41,930
chúng tôi không muốn một tài khoản quản trị viên được tạo ra bằng cách thực hiện

35
00:02:41,930 --> 00:02:47,030
thao tác đăng ký trên tài khoản người dùng/đăng ký của chúng tôi.

36
00:02:47,030 --> 00:02:50,670
Điều này sẽ khiến máy chủ của chúng tôi dễ bị tấn công.

37
00:02:50,670 --> 00:02:54,185
Vì vậy, một tài khoản quản trị chỉ có thể được thiết lập

38
00:02:54,185 --> 00:02:59,085
đằng sau hậu trường bằng cách truy cập trực tiếp vào cơ sở dữ liệu.

39
00:02:59,085 --> 00:03:02,090
Vì vậy, chúng ta hãy nhìn vào cách chúng ta làm điều

40
00:03:02,090 --> 00:03:08,340
này trong hình minh họa mà tôi sẽ cho các bạn thấy ngay sau đó.

41
00:03:08,380 --> 00:03:11,700
Bây giờ, để kiểm tra cơ sở dữ liệu của chúng

42
00:03:11,700 --> 00:03:15,865
tôi, hãy để tôi bắt đầu Mongo Ripple tại dấu nhắc lệnh,

43
00:03:15,865 --> 00:03:21,740
và sau đó đi đến thư mục nhầm lẫn và sau đó cho phép tôi

44
00:03:21,740 --> 00:03:27,830
kiểm tra những người dùng được đăng ký trong cơ sở dữ liệu của tôi tại thời điểm này.

45
00:03:27,830 --> 00:03:32,015
Vì vậy, bạn có thể thấy rằng tôi chỉ có một người dùng đăng ký.

46
00:03:32,015 --> 00:03:35,735
Vì vậy, hãy để tôi thiết lập hai tài khoản bổ sung,

47
00:03:35,735 --> 00:03:37,695
một cho một người dùng thông thường,

48
00:03:37,695 --> 00:03:40,280
và một trong đó sẽ là một quản trị viên.

49
00:03:40,280 --> 00:03:47,415
Vì vậy, chúng tôi sẽ đăng ký quản trị viên và người dùng thứ hai cũng từ điểm đăng ký của chúng tôi,

50
00:03:47,415 --> 00:03:51,935
sau đó họ sẽ trở lại Mongo Ripple và sau đó thiết lập tài khoản quản trị một

51
00:03:51,935 --> 00:03:57,110
cách rõ ràng bằng cách sửa đổi hồ sơ trong cơ sở dữ liệu của chúng tôi.

52
00:03:57,110 --> 00:03:58,935
Đi đến Postman pin,

53
00:03:58,935 --> 00:04:03,780
hãy để tôi đăng ký thêm hai người dùng.

54
00:04:03,780 --> 00:04:07,755
Vì vậy, trước đó chúng tôi đã đăng ký một người dùng với tên này,

55
00:04:07,755 --> 00:04:15,660
vì vậy tôi sẽ đăng ký một người dùng khác vào hệ thống của tôi,

56
00:04:15,660 --> 00:04:20,945
và do đó, một người dùng thứ hai bây giờ đã đăng ký thành công.

57
00:04:20,945 --> 00:04:24,660
Bây giờ, hãy để tôi đăng ký một tài khoản quản trị viên.

58
00:04:24,660 --> 00:04:25,880
Vì vậy, đối với tài khoản quản trị viên,

59
00:04:25,880 --> 00:04:31,910
tôi sẽ thiết lập tên người dùng là quản trị viên và sau đó đăng ký một người dùng quản trị viên.

60
00:04:31,910 --> 00:04:38,545
Vì vậy, chúng ta thấy rằng bây giờ chúng ta đã thêm hai tài khoản mới vào hệ thống của chúng tôi.

61
00:04:38,545 --> 00:04:40,455
Đi đến Mongo Ripple,

62
00:04:40,455 --> 00:04:43,870
hãy để tôi lặp lại

63
00:04:43,870 --> 00:04:51,110
db.user.find () và để tôi làm điều đó khá để nó trông dễ đọc hơn.

64
00:04:51,110 --> 00:04:52,845
Vì vậy, khi tôi làm điều này,

65
00:04:52,845 --> 00:04:58,655
bạn có thể thấy rằng chúng tôi có một tài khoản quản trị viên ở đây với tên người dùng là một quản trị viên.

66
00:04:58,655 --> 00:05:00,770
Bỏ qua tên và họ,

67
00:05:00,770 --> 00:05:05,190
tôi sẽ thiết lập tên và họ này để được giống nhau cho cả ba.

68
00:05:05,190 --> 00:05:12,800
Sau đó, chúng tôi có tài khoản người dùng khác mà tôi đã thiết lập với tên người dùng ở đây

69
00:05:12,800 --> 00:05:17,190
và tài khoản người dùng thứ ba mà chúng tôi đã có trong cơ sở dữ liệu của chúng tôi.

70
00:05:17,190 --> 00:05:19,750
Vì vậy, bây giờ chúng ta có ba tài khoản người dùng;

71
00:05:19,750 --> 00:05:22,215
hai tài khoản người dùng ở đây

72
00:05:22,215 --> 00:05:23,860
và một tài khoản quản trị viên.

73
00:05:23,860 --> 00:05:28,395
Bây giờ, tất nhiên, bạn sẽ thấy rằng trong tài khoản người dùng,

74
00:05:28,395 --> 00:05:32,690
chúng tôi có cờ này gọi là cờ quản trị được đặt thành false cho

75
00:05:32,690 --> 00:05:38,100
bất kỳ tài khoản nào được đăng ký trên điểm cuối /users/đăng ký này.

76
00:05:38,100 --> 00:05:40,740
Đó là cách mặc định mà bạn nên thiết lập tài khoản.

77
00:05:40,740 --> 00:05:44,465
Bạn không thể cho phép người dùng cấu hình tài khoản quản trị

78
00:05:44,465 --> 00:05:48,945
bằng cách thực hiện bất cứ điều gì trực tiếp trên điểm cuối API còn lại.

79
00:05:48,945 --> 00:05:53,600
Thay vào đó, chúng tôi sẽ đi đằng sau hậu trường và sau đó trong Mongo Ripple,

80
00:05:53,600 --> 00:06:00,510
tôi sẽ sửa đổi hồ sơ này cho người dùng quản trị bằng cách

81
00:06:00,510 --> 00:06:07,920
nói db.users.update và sau đó

82
00:06:07,920 --> 00:06:15,205
chúng tôi sẽ cung cấp tên người dùng như quản trị viên ở đây.

83
00:06:15,205 --> 00:06:25,470
Vì vậy, chúng tôi sẽ cập nhật bản ghi câu thơ và sau đó chúng tôi sẽ nói {$set:

84
00:06:25,470 --> 00:06:31,520
nhớ lại cách chúng tôi đã thao tác MongoDB để chúng tôi sẽ

85
00:06:31,520 --> 00:06:39,180
nói {$set: {"admin”: “true”}}.

86
00:06:39,180 --> 00:06:42,980
Vì vậy, những gì chúng tôi đang làm ở đây là chúng tôi đang tìm

87
00:06:42,980 --> 00:06:47,810
kiếm tài khoản người dùng này với quản trị viên tên người dùng,

88
00:06:47,810 --> 00:06:52,190
và sau đó chúng tôi đang thiết lập cờ quản trị thành true

89
00:06:52,190 --> 00:06:58,125
ở đây bằng cách sử dụng tùy chọn $set.

90
00:06:58,125 --> 00:07:02,520
Vì vậy, đây là cách chúng tôi sẽ cập nhật một tài khoản để trở thành một tài khoản quản trị viên.

91
00:07:02,520 --> 00:07:08,010
Vì vậy, bạn thấy rằng điều này đã sửa đổi kết quả.

92
00:07:08,010 --> 00:07:11,880
Vì vậy, chúng ta hãy kiểm tra lại các tài khoản.

93
00:07:11,880 --> 00:07:13,410
Bây giờ, khi bạn kiểm tra tài khoản,

94
00:07:13,410 --> 00:07:16,140
bạn sẽ thấy rằng đối với tài khoản quản trị viên,

95
00:07:16,140 --> 00:07:19,475
cờ quản trị viên bây giờ được đặt thành true,

96
00:07:19,475 --> 00:07:22,810
vì vậy đó là cách bạn sẽ kết thúc tạo một tài khoản quản trị viên.

97
00:07:22,810 --> 00:07:27,920
Bây giờ, tài khoản Admin như chúng tôi mong đợi có các đặc quyền bổ sung.

98
00:07:27,920 --> 00:07:33,400
Vì vậy, một khi bạn hoàn thành nhiệm vụ này sau đó,

99
00:07:33,400 --> 00:07:38,525
bạn sẽ nhận thấy rằng các hoạt động get có thể được thực hiện bởi bất kỳ người dùng trên

100
00:07:38,525 --> 00:07:45,080
/món ăn/món ăn/aspecificdishendt/chương trình khuyến mãi

101
00:07:45,080 --> 00:07:50,570
và /promotions/specificpromotionendpoint và tương tự,

102
00:07:50,570 --> 00:07:52,985
cho các nhà lãnh đạo trong điểm cũng.

103
00:07:52,985 --> 00:07:55,590
Nhưng các hoạt động POST, đặt

104
00:07:55,590 --> 00:08:02,195
và xóa các hoạt động trên các điểm cuối này chỉ có thể được thực hiện bởi người dùng quản trị.

105
00:08:02,195 --> 00:08:08,110
Bây giờ, ngoài ra, điểm cuối ý kiến,

106
00:08:08,110 --> 00:08:14,110
chúng tôi sẽ chỉ cho phép một người dùng đăng ký đã đăng nhập để

107
00:08:14,110 --> 00:08:20,835
truy cập ý kiến cho một món ăn cụ thể,

108
00:08:20,835 --> 00:08:25,990
chúng tôi sẽ cho phép một người dùng đăng nhập để đăng bình luận.

109
00:08:25,990 --> 00:08:28,730
Chúng tôi đã thiết lập điều này trong bài tập vì vậy,

110
00:08:28,730 --> 00:08:31,290
khi người dùng đăng bình luận,

111
00:08:31,290 --> 00:08:34,150
chúng tôi đã đảm bảo rằng chúng tôi xác minh

112
00:08:34,150 --> 00:08:37,150
tính xác thực của người dùng và sau đó khi nhận xét được đăng,

113
00:08:37,150 --> 00:08:44,060
chúng tôi đã thiết lập ID tác giả cho nhận xét bằng cách sử dụng ID người dùng.

114
00:08:44,060 --> 00:08:46,140
Vì vậy, chúng tôi đã hoàn thành điều đó.

115
00:08:46,140 --> 00:08:48,625
Nhưng bây giờ, ngoài ra,

116
00:08:48,625 --> 00:08:55,220
đối với các hoạt động đặt và xóa trên nhận xét,

117
00:08:55,220 --> 00:08:59,480
chỉ có người dùng đã gửi nhận xét cụ thể sẽ được

118
00:08:59,480 --> 00:09:04,180
phép thực hiện đặt và xóa các hoạt động trên nhận xét của riêng mình.

119
00:09:04,180 --> 00:09:08,480
Bất kỳ người dùng nào khác không thể sửa đổi nhận xét của người khác.

120
00:09:08,480 --> 00:09:13,355
Tương tự như vậy, ngay cả người quản trị cũng không thể sửa đổi nhận xét của

121
00:09:13,355 --> 00:09:14,960
người khác, hoặc xóa nhận xét của người khác.

122
00:09:14,960 --> 00:09:18,850
Vì vậy, đó là phần thứ hai của nhiệm vụ mà bạn sẽ thực hiện.

123
00:09:18,850 --> 00:09:22,910
Phần thứ ba là một quản trị viên có thể truy vấn

124
00:09:22,910 --> 00:09:31,115
điểm kết thúc /users và yêu cầu danh sách người dùng đã đăng ký,

125
00:09:31,115 --> 00:09:35,090
không người dùng thông thường nào khác có thể thực hiện truy vấn này.

126
00:09:35,090 --> 00:09:38,550
Vì vậy, đây là một hạn chế khác mà chúng ta sẽ đưa vào đó.

127
00:09:38,550 --> 00:09:42,745
Bây giờ, để xác minh rằng người dùng là quản trị viên,

128
00:09:42,745 --> 00:09:46,770
trước tiên chúng tôi sẽ xác minh rằng người dùng là người dùng đã đăng ký.

129
00:09:46,770 --> 00:09:51,470
Vì vậy, chức năng xác minh người dùng mà chúng tôi đã thực hiện trong

130
00:09:51,470 --> 00:09:56,450
authenticate.js nên được áp dụng ngay cả khi bạn cần kiểm tra quản trị viên.

131
00:09:56,450 --> 00:09:59,855
Trước tiên, bạn kiểm tra xem có phải là người dùng đã xác minh không, sau đó,

132
00:09:59,855 --> 00:10:05,795
bạn sẽ giới thiệu một chức năng khác gọi là VerifyAdmin trong

133
00:10:05,795 --> 00:10:12,285
tập tin authenticate.js mà sẽ kiểm tra để đảm bảo rằng người dùng là người quản trị.

134
00:10:12,285 --> 00:10:15,190
Bây giờ, để kiểm tra xem người dùng có phải là quản trị viên hay không,

135
00:10:15,190 --> 00:10:19,900
tất cả những gì bạn cần làm là kiểm tra rec.user có trên

136
00:10:19,900 --> 00:10:24,855
đối tượng yêu cầu rec.user ở đó,

137
00:10:24,855 --> 00:10:28,325
hãy kiểm tra xem cờ quản trị viên có đúng hay không.

138
00:10:28,325 --> 00:10:30,375
Nếu cờ quản trị là đúng,

139
00:10:30,375 --> 00:10:39,315
bạn sẽ cho phép quá trình bình thường tiến hành hơn nữa để [không nghe được] xảy ra.

140
00:10:39,315 --> 00:10:41,570
Nếu người dùng không phải là quản trị viên,

141
00:10:41,570 --> 00:10:49,075
bạn sẽ tạo ra một lỗi và gửi lại một thông báo lỗi về phía khách hàng.

142
00:10:49,075 --> 00:10:53,945
Vì vậy, đó là cách chúng tôi sẽ xử lý tài khoản người dùng quản trị.

143
00:10:53,945 --> 00:11:03,165
Bây giờ, khi một người dùng đang cố gắng sửa đổi hoặc xóa nhận xét của mình,

144
00:11:03,165 --> 00:11:06,320
chúng tôi phải kiểm tra để đảm bảo rằng tác giả của nhận xét

145
00:11:06,320 --> 00:11:10,245
giống như người dùng đang cố gắng sửa đổi nhận xét.

146
00:11:10,245 --> 00:11:13,085
Bây giờ, rec.user cũng có trường ID,

147
00:11:13,085 --> 00:11:16,860
vì vậy bạn cần phải kiểm tra chéo với trường tác giả của nhận xét.

148
00:11:16,860 --> 00:11:18,255
Nếu hai khớp này,

149
00:11:18,255 --> 00:11:22,390
thì bạn sẽ cho phép người dùng thực hiện các thao tác đặt hoặc xóa.

150
00:11:22,390 --> 00:11:24,050
Nếu họ không khớp,

151
00:11:24,050 --> 00:11:31,190
sau đó bạn sẽ không cho phép đặt hoặc xóa các hoạt động trên nhận xét cụ thể đó.

152
00:11:31,190 --> 00:11:33,590
Vì vậy, đây là khía cạnh khác mà bạn

153
00:11:33,590 --> 00:11:37,185
sẽ thực hiện như là một phần của nhiệm vụ thứ ba của bạn.

154
00:11:37,185 --> 00:11:40,420
Hãy nhìn vào cách tất cả những thứ này hoạt động bằng cách

155
00:11:40,420 --> 00:11:44,500
sử dụng Postman để thực hiện các hoạt động khác nhau trên máy chủ của chúng tôi.

156
00:11:44,500 --> 00:11:46,545
Quay trở lại Postman,

157
00:11:46,545 --> 00:11:49,725
trước tiên tôi thực hiện một thao tác GET trên

158
00:11:49,725 --> 00:11:53,920
các món ăn để chỉ kiểm tra xem những gì có trong cơ sở dữ liệu của tôi.

159
00:11:53,920 --> 00:11:56,140
Vì vậy, nếu tôi thực hiện một hoạt động GET trên các món ăn,

160
00:11:56,140 --> 00:12:00,270
lưu ý rằng tôi không đặt bất kỳ xác thực trong tiêu đề.

161
00:12:00,270 --> 00:12:02,500
GET hoạt động được cho phép bởi bất cứ ai.

162
00:12:02,500 --> 00:12:04,420
Vì vậy, khi tôi thực hiện thao tác GET,

163
00:12:04,420 --> 00:12:13,985
tôi có thể thấy rằng tôi đã có một món ăn với một nhận xét đã có trong món ăn đó.

164
00:12:13,985 --> 00:12:18,900
Nhận xét này đã được đăng bởi người dùng này.

165
00:12:18,900 --> 00:12:23,895
Vì vậy, chúng tôi đã có một món ăn trong hệ thống ở đó.

166
00:12:23,895 --> 00:12:26,520
Vì vậy, điều này là hoàn toàn tốt,

167
00:12:26,520 --> 00:12:28,405
tôi sẽ xóa các món ăn.

168
00:12:28,405 --> 00:12:29,875
Bây giờ, để xóa các món ăn,

169
00:12:29,875 --> 00:12:33,855
rõ ràng rằng hoạt động không thể được thực hiện bởi một người dùng bình thường.

170
00:12:33,855 --> 00:12:36,500
Vì vậy, hãy để tôi đăng nhập như,

171
00:12:36,500 --> 00:12:40,310
vì vậy bạn có thể thấy rằng tôi đang đăng nhập như một người dùng thông thường.

172
00:12:40,310 --> 00:12:44,940
Vì vậy, hãy để tôi đăng nhập với tư cách là một người dùng thông thường.

173
00:12:44,940 --> 00:12:47,140
Vì vậy, khi tôi đăng nhập, tôi sẽ nhận được mã thông báo.

174
00:12:47,140 --> 00:12:49,725
Vì vậy, tôi sẽ sao chép mã thông báo này và lưu nó.

175
00:12:49,725 --> 00:12:53,845
Bây giờ, tôi có mã thông báo của tôi,

176
00:12:53,845 --> 00:12:58,770
hãy để tôi thực hiện một thao tác DELETE trên các món ăn.

177
00:12:58,770 --> 00:13:01,985
Vì vậy, khi tôi đi đến hoạt động DELETE.

178
00:13:01,985 --> 00:13:07,370
Vì vậy, hãy để tôi chọn GET này và sau đó thực hiện một thao tác DELETE với các món ăn.

179
00:13:07,370 --> 00:13:13,440
Trong tiêu đề, hãy để tôi bao gồm ủy quyền ở đây và bạn sẽ nhận thấy

180
00:13:13,440 --> 00:13:22,144
rằng khi chúng tôi dán vào yêu cầu và sau đó gửi ủy quyền DELETE,

181
00:13:22,144 --> 00:13:27,325
bạn sẽ nhận thấy rằng nó ngay lập tức trở lại với thông báo này ở đây,

182
00:13:27,325 --> 00:13:28,990
như bạn có thể thấy trong bản xem trước,

183
00:13:28,990 --> 00:13:33,510
nó nói “Bạn không được ủy quyền thực hiện thao tác này! “

184
00:13:33,510 --> 00:13:37,410
Sau đó, mã lỗi là 403 bị cấm.

185
00:13:37,410 --> 00:13:41,540
Vì vậy, đây là một thông báo đã tạo ra bởi

186
00:13:41,540 --> 00:13:46,470
chức năng VerifyAdmin mà bạn sẽ được thực hiện như là một phần của bài tập này.

187
00:13:46,470 --> 00:13:49,720
Vì vậy, nếu người dùng không phải là quản trị viên,

188
00:13:49,720 --> 00:13:53,085
thì đây là thông báo mà VerifyAdmin của bạn sẽ

189
00:13:53,085 --> 00:13:57,880
tạo ra và nó sẽ không cho phép yêu cầu vượt quá thời điểm đó.

190
00:13:57,880 --> 00:14:04,150
Vì vậy, bạn có thể thấy rằng tôi đã đóng tắt hoạt động DELETE.

191
00:14:04,150 --> 00:14:05,895
Bây giờ, làm thế nào để bạn làm điều này?

192
00:14:05,895 --> 00:14:11,925
Trong mã của bạn, bạn đã thấy rằng để áp dụng VerifyUser,

193
00:14:11,925 --> 00:14:16,270
chúng tôi thiết lập Authenticate.VerifyUser trong các

194
00:14:16,270 --> 00:14:18,270
hoạt động POST, PUT và DELETE.

195
00:14:18,270 --> 00:14:22,105
Bây giờ, bạn có thể chuỗi các middleware cái này đến cái khác.

196
00:14:22,105 --> 00:14:25,200
Vì vậy, chúng ta có thể nói Authenticate.VerifyUser dấu phẩy

197
00:14:25,200 --> 00:14:28,905
và sau đó sau đó bạn có thể nói Authenticate.VerifyAdmin,

198
00:14:28,905 --> 00:14:32,190
để áp dụng VerifyAdmin ngay sau khi VerifyUser.

199
00:14:32,190 --> 00:14:35,840
Vì vậy, nếu bạn muốn một hoạt động được giới hạn chỉ cho người quản trị,

200
00:14:35,840 --> 00:14:39,520
trước tiên bạn làm phần VerifyUser và sau đó ngay lập tức sau đó,

201
00:14:39,520 --> 00:14:42,085
bạn áp dụng phần mềm trung gian VerifyAdmin.

202
00:14:42,085 --> 00:14:45,274
Ngay sau đó. Vì vậy, nếu hai kiểm tra này, đi

203
00:14:45,274 --> 00:14:49,615
qua thành công, sau đó bạn sẽ đi vào thực hiện các hoạt động.

204
00:14:49,615 --> 00:14:52,240
Nếu kiểm tra VerifyAdmin không thành công,

205
00:14:52,240 --> 00:14:54,870
bạn sẽ trả lại thông báo lỗi này như bạn thấy

206
00:14:54,870 --> 00:14:57,995
ở đây và sau đó hủy bỏ hoạt động đó một phần.

207
00:14:57,995 --> 00:15:01,300
Vì vậy, bạn sẽ trả lại lỗi tiếp theo từ VerifyAdmin của bạn,

208
00:15:01,300 --> 00:15:03,260
nếu người dùng không phải là quản trị viên.

209
00:15:03,260 --> 00:15:08,100
Vì vậy, tôi đã chứng minh cho bạn cách bạn sẽ

210
00:15:08,100 --> 00:15:12,865
sử dụng tài khoản người dùng quản trị để hạn chế hoạt động cho một PUT

211
00:15:12,865 --> 00:15:15,285
, POST và DELETE hoạt động.

212
00:15:15,285 --> 00:15:21,935
Điều tương tự, POST và PUT hoạt động cũng sẽ không được phép trên bất kỳ của các n phần.

213
00:15:21,935 --> 00:15:26,360
Bây giờ, để tôi thể hiện khía cạnh khác ở đây.

214
00:15:26,360 --> 00:15:28,710
Vì vậy, bạn đã thấy rằng trong đó,

215
00:15:28,710 --> 00:15:30,450
khi chúng tôi thực hiện thao tác GET,

216
00:15:30,450 --> 00:15:37,570
bạn thấy rằng đã có một bình luận được đăng bởi tên người dùng Jogesh,

217
00:15:37,570 --> 00:15:40,230
người dùng đầu tiên trong hệ thống của tôi.

218
00:15:40,230 --> 00:15:43,385
Bây giờ, tôi sẽ đăng nhập với tư cách là người dùng khác.

219
00:15:43,385 --> 00:15:53,080
Vì vậy, tôi sẽ đăng nhập như vào tài khoản thứ hai của tôi là Muppala và sau đó khi tôi đăng nhập,

220
00:15:53,080 --> 00:15:54,175
tôi lại nhận được mã thông báo.

221
00:15:54,175 --> 00:15:56,585
Vì vậy, để tôi lấy mã này ở đây.

222
00:15:56,585 --> 00:15:58,645
Để tôi sao chép mã thông báo này.

223
00:15:58,645 --> 00:16:04,685
Bây giờ, những gì tôi sẽ làm là tôi sẽ làm một GET trên các món ăn localhost.

224
00:16:04,685 --> 00:16:12,520
Vì vậy, hãy để tôi làm một GET trên các món ăn localhost để cho bạn thấy bình luận cụ thể bên trong đây.

225
00:16:12,520 --> 00:16:16,030
Vì vậy, nhận xét đặc biệt này với ID này.

226
00:16:16,030 --> 00:16:17,640
Vì vậy, những gì tôi sẽ làm là,

227
00:16:17,640 --> 00:16:20,400
tôi sẽ sao chép ID món ăn đó.

228
00:16:20,400 --> 00:16:26,810
Tôi cũng sẽ sao chép ID nhận xét từ đây và tôi sẽ thực hiện

229
00:16:26,810 --> 00:16:38,700
một hoạt động DELETE trên món ăn cụ thể này

230
00:16:38,700 --> 00:16:42,615
và nhớ lại rằng chúng ta có

231
00:16:42,615 --> 00:16:50,980
dấu gạch chéo ý kiến và sau đó ID nhận xét đặc biệt này.

232
00:16:50,980 --> 00:16:55,350
Bây giờ, hãy nhớ rằng bình luận này đã được đăng bởi tên người dùng này,

233
00:16:55,350 --> 00:17:01,120
nhưng bây giờ tôi đã đăng nhập vào bản thân mình như là người dùng khác với một tên người dùng khác.

234
00:17:01,120 --> 00:17:07,075
Vì vậy, khi bây giờ tôi thực hiện thao tác DELETE bằng cách sử dụng tài khoản khác,

235
00:17:07,075 --> 00:17:11,950
bạn sẽ ngay lập tức nhận thấy rằng ở đây nó nói,

236
00:17:11,950 --> 00:17:15,550
“Bạn không được phép xóa nhận xét này! “

237
00:17:15,550 --> 00:17:18,970
Sau đó, nó nói 403, cùng một điều.

238
00:17:18,970 --> 00:17:24,205
Nếu bạn cố gắng thực hiện một thao tác PUT trên nhận xét cụ thể đã đăng nhập với tư cách người dùng khác

239
00:17:24,205 --> 00:17:30,010
, nó sẽ nói, “Bạn không được phép cập nhật nhận xét này!”

240
00:17:30,010 --> 00:17:35,340
Vì vậy, cả PUT, DELETE và UPDATE nhận xét của người khác đều không được phép.

241
00:17:35,340 --> 00:17:41,855
Vì vậy, bây giờ, hãy để tôi đăng nhập như quản trị viên tại thời điểm này và sau đó cho phép tôi cố gắng để xóa

242
00:17:41,855 --> 00:17:50,510
nhận xét cụ thể và bạn sẽ thấy rằng cùng một thông điệp sẽ được tạo ra.

243
00:17:50,510 --> 00:17:55,890
Vì vậy, một quản trị viên cũng không thể xóa hoặc cập nhật ý kiến của người khác.

244
00:17:55,890 --> 00:17:57,600
Vì vậy, để đăng nhập như một quản trị viên,

245
00:17:57,600 --> 00:18:02,785
hãy để tôi đi vào POST ở đây và sau đó cho phép tôi đăng nhập như một quản trị viên.

246
00:18:02,785 --> 00:18:08,585
Bây giờ, hãy nhớ rằng các thẻ này sẽ có giá trị trong 33,600 giây.

247
00:18:08,585 --> 00:18:12,620
Vì vậy, bạn có thể lưu các thẻ ba mà bạn tạo ra cho ba người dùng.

248
00:18:12,620 --> 00:18:16,270
Vì vậy, bạn không cần phải tiếp tục đăng nhập với tư cách là người dùng cụ thể đó.

249
00:18:16,270 --> 00:18:20,180
Miễn là bạn sử dụng đúng mã thông báo trong tiêu đề, các

250
00:18:20,180 --> 00:18:25,670
hoạt động của bạn sẽ thực hiện tốt xác định ba người dùng khác nhau.

251
00:18:25,670 --> 00:18:28,655
Vì vậy, hãy để tôi đăng nhập với tư cách là quản trị viên ở đây.

252
00:18:28,655 --> 00:18:30,670
Vì vậy, khi tôi đăng nhập với tư cách quản trị viên,

253
00:18:30,670 --> 00:18:31,680
tôi nhận được mã thông báo ở đây.

254
00:18:31,680 --> 00:18:34,930
Vì vậy, tôi sẽ sao chép và lưu mã thông báo này.

255
00:18:35,010 --> 00:18:40,800
Chỉ cần nhớ mã thông báo nào thuộc về ai khi bạn tạo một bản sao của điều này.

256
00:18:40,800 --> 00:18:45,430
Bây giờ, quay trở lại này, xóa hoạt động bình luận.

257
00:18:45,430 --> 00:18:54,575
Tôi sẽ đi vào tiêu đề và sau đó tôi sẽ thay đổi điều này để mã thông báo cho

258
00:18:54,575 --> 00:19:00,980
quản trị viên và sau đó cố gắng thực hiện thao tác DELETE tương tự và sau đó bạn thấy

259
00:19:00,980 --> 00:19:08,420
rằng ngay cả quản trị viên không được phép xóa nhận xét được đăng bởi người dùng khác.

260
00:19:08,420 --> 00:19:10,480
Điều này hoàn toàn chấp nhận được.

261
00:19:10,480 --> 00:19:13,095
Nhưng chúng ta hãy cố gắng xóa cùng một nhận xét,

262
00:19:13,095 --> 00:19:15,255
bởi người dùng này đã tạo ra

263
00:19:15,255 --> 00:19:18,425
nhận xét đó và bạn sẽ thấy rằng điều đó có thể được thực hiện thành công.

264
00:19:18,425 --> 00:19:20,715
Vì vậy, chúng ta hãy thực hiện thao tác đó.

265
00:19:20,715 --> 00:19:24,720
Vì vậy, để làm điều đó, tôi sẽ quay trở lại và lấy mã thông báo mà tôi đã

266
00:19:24,720 --> 00:19:30,345
nhận được cho người dùng đầu tiên và sau đó thay đổi trường ủy quyền.

267
00:19:30,345 --> 00:19:33,260
Bây giờ, cho hoạt động DELETE này,

268
00:19:33,260 --> 00:19:35,860
tôi sẽ thay đổi điều này để mang,

269
00:19:35,860 --> 00:19:42,400
và sau đó đây là mã thông báo cho người dùng đầu tiên với tên người dùng Jogesh.

270
00:19:42,400 --> 00:19:46,100
Vì vậy, khi tôi cố gắng xóa nhận xét đó,

271
00:19:46,100 --> 00:19:50,850
bạn sẽ nhận thấy rằng nhận xét bây giờ bị xóa thành công.

272
00:19:50,850 --> 00:19:53,710
Vì vậy, như bạn có thể thấy từ các bước,

273
00:19:53,710 --> 00:19:57,830
nhận xét chỉ có thể bị xóa bởi người dùng đã tạo nhận xét đó.

274
00:19:57,830 --> 00:19:59,120
Bây giờ, bước tiếp theo,

275
00:19:59,120 --> 00:20:02,345
khi chúng tôi thực hiện thao tác DELETE trên các món ăn,

276
00:20:02,345 --> 00:20:07,120
chúng tôi đã thấy trước đó rằng nếu chúng tôi đã thực hiện thao tác DELETE như một người dùng thông thường,

277
00:20:07,120 --> 00:20:09,400
bạn sẽ nhận được một thông báo nói,

278
00:20:09,400 --> 00:20:12,010
“Bạn không được phép thực hiện thao tác này!”

279
00:20:12,010 --> 00:20:16,670
Vì vậy, tôi sẽ thay đổi mã thông báo này thành mã thông báo của quản trị viên và sau đó

280
00:20:16,670 --> 00:20:21,425
cho bạn thấy rằng một quản trị viên có thể thực hiện thao tác DELETE trên các món ăn và nồi.

281
00:20:21,425 --> 00:20:23,480
Vì vậy, đi vào yêu cầu này,

282
00:20:23,480 --> 00:20:30,550
hãy để tôi thay đổi mã thông báo để là mã thông báo cho người dùng quản trị.

283
00:20:30,550 --> 00:20:34,765
Vì vậy, khi tôi thực hiện thao tác DELETE như người dùng quản trị,

284
00:20:34,765 --> 00:20:37,375
bạn sẽ nhận thấy rằng thao tác DELETE là

285
00:20:37,375 --> 00:20:41,905
thành công và sau đó trả lời lại với thông báo ở đây.

286
00:20:41,905 --> 00:20:45,715
Bây giờ, khi tôi làm một GET trên điểm cuối món ăn,

287
00:20:45,715 --> 00:20:52,515
bạn sẽ nhận thấy rằng các hoạt động GET cho thấy rằng các món ăn của tôi đã được làm trống.

288
00:20:52,515 --> 00:20:59,285
Bây giờ, các hoạt động khác mà bạn cũng sẽ thực hiện trong nhiệm vụ này,

289
00:20:59,285 --> 00:21:05,670
là chúng ta có thể làm một hoạt động GET trên điểm cuối người dùng gạch chéo.

290
00:21:05,670 --> 00:21:09,285
Vì vậy, khi bạn thực hiện một thao tác GET trên điểm cuối của người dùng gạch chéo,

291
00:21:09,285 --> 00:21:12,690
bạn sẽ nhận thấy rằng nếu bạn không phải là một người dùng được ủy quyền,

292
00:21:12,690 --> 00:21:16,450
nó sẽ nói rằng bạn không được phép thực hiện thao tác này.

293
00:21:16,450 --> 00:21:20,850
Vì vậy, localhost:3000/users/endpoint,

294
00:21:20,850 --> 00:21:27,355
bây giờ bạn sẽ cho phép điều này được thực hiện chỉ bởi quản trị viên.

295
00:21:27,355 --> 00:21:29,265
Vì vậy, nếu một người dùng thông thường,

296
00:21:29,265 --> 00:21:32,420
nếu bạn đăng nhập như một người dùng thông thường với tiêu đề,

297
00:21:32,420 --> 00:21:36,510
bạn sẽ không được phép thực hiện thao tác này.

298
00:21:36,510 --> 00:21:42,390
Bây giờ, hãy để tôi thay đổi mã thông báo này thành mã thông báo

299
00:21:42,390 --> 00:21:45,345
ra khỏi quản trị viên và sau đó bạn sẽ thấy rằng

300
00:21:45,345 --> 00:21:48,460
quản trị viên sẽ được phép thực hiện thao tác này.

301
00:21:48,460 --> 00:21:50,135
Vì vậy, đi đến GET,

302
00:21:50,135 --> 00:21:55,600
hãy để tôi thay đổi mã thông báo này thành mã thông báo cho

303
00:21:55,600 --> 00:22:02,980
người dùng quản trị và sau đó khi tôi thực hiện thao tác GET trên đó, nó sẽ trả về.

304
00:22:02,980 --> 00:22:07,945
Như bạn có thể thấy, ba người dùng được đăng ký trong hệ thống của tôi,

305
00:22:07,945 --> 00:22:11,015
nó hiển thị số người dùng một,

306
00:22:11,015 --> 00:22:13,950
số người dùng hai và số người dùng ba.

307
00:22:13,950 --> 00:22:17,530
Tất nhiên, nhận thấy rằng băm và muối được loại bỏ,

308
00:22:17,530 --> 00:22:21,965
khi thông báo được trả về bởi phía máy chủ cho phía máy khách.

309
00:22:21,965 --> 00:22:25,490
Vì vậy, thông tin băm và muối sẽ không bao giờ được tiết lộ bên ngoài.

310
00:22:25,490 --> 00:22:28,755
Vì vậy, người Mông Cổ sẽ tự động chăm sóc lọc

311
00:22:28,755 --> 00:22:32,580
ra thông tin đó trước khi nó gửi lại thông tin của người dùng.

312
00:22:32,580 --> 00:22:35,890
Vì vậy, bởi vì bạn không nên tiết lộ thông

313
00:22:35,890 --> 00:22:39,160
tin băm và muối cho thế giới bên ngoài.

314
00:22:39,160 --> 00:22:44,510
Vì vậy, đây là thông tin tài khoản người dùng ba được trả lại.

315
00:22:44,510 --> 00:22:47,835
Vì vậy, điều này được trả lại chỉ khi bạn thực hiện các thao tác GET

316
00:22:47,835 --> 00:22:51,900
trên điểm cuối người dùng gạch chéo như người dùng quản trị.

317
00:22:51,900 --> 00:22:56,295
Nếu bạn thực hiện yêu cầu tương tự như bất kỳ người dùng nào khác,

318
00:22:56,295 --> 00:22:58,055
điều này sẽ không được phép.

319
00:22:58,055 --> 00:23:01,065
Vì vậy, một lần nữa bạn sẽ kiểm tra đầu tiên,

320
00:23:01,065 --> 00:23:05,040
VerifyUser và sau đó kiểm tra VerifyAdmin và chỉ khi nó là một quản trị viên,

321
00:23:05,040 --> 00:23:08,940
sau đó thao tác này có thể được thực hiện trên điểm kết thúc này.

322
00:23:08,940 --> 00:23:15,535
Vì vậy, đây là tất cả các nhiệm vụ khác nhau mà bạn sẽ làm như một phần của nhiệm vụ này.

323
00:23:15,535 --> 00:23:22,990
Các chi tiết về cách này cần phải được thực hiện được ghi lại trong hướng dẫn phân công.

324
00:23:22,990 --> 00:23:27,875
Vì vậy, đọc qua các hướng dẫn trước khi bạn tiến hành để hoàn thành nhiệm vụ thứ ba.

325
00:23:27,875 --> 00:23:32,380
Hãy vui vẻ hoàn thành nhiệm vụ thứ ba.