Bây giờ chúng ta đã hiểu về cookie và phiên diễn đạt,
trong bài tập này, chúng ta hãy xem xét cookie nói riêng.
Chúng ta sẽ thấy làm thế nào chúng ta có thể sử dụng phần mềm trung gian phân tích cookie
để thiết lập và xử lý cookie trong ứng dụng thể hiện của chúng tôi.
Quay trở lại ứng dụng Confant Server Express của
chúng tôi mà chúng tôi đã làm việc cho đến nay,
bạn sẽ nhận thấy ở trên cùng rằng trình phân tích cú pháp cookie
đã được bao gồm trong ứng dụng nhanh của chúng tôi.
Nếu bạn cần cài đặt một cách rõ ràng cookie-parser,
bạn chỉ cần gõ “npm install cookie-parser trừ đi lưu”.
Nhưng kể từ khi chúng tôi Express Generator đã bao gồm
trình phân tích cú pháp cookie vào ứng dụng thể hiện của chúng tôi mà chúng tôi giàn giáo ra,
chúng tôi không cần phải thực hiện bước đó trong bài tập này.
Vì vậy, bạn thấy rằng trình phân tích cookie đã được bao gồm ở
đó, và sau đó nếu
bạn di chuyển xuống, bạn sẽ thấy rằng trong mã ngay dưới đây,
bạn sẽ thấy trình phân tích cookie đã được đưa vào phần mềm trung gian đó.
Bây giờ, đối với trình phân tích cookie này,
chúng tôi sẽ sử dụng cookie đã ký trong bài tập này.
Vì vậy, đối với bộ phân tích cookie này,
tôi sẽ cung cấp một khóa bí mật làm tham số ở đây.
Khóa bí mật có thể là bất kỳ chuỗi nào ở đó,
vì vậy tôi sẽ chỉ cung cấp một chuỗi như thế này, tôi sẽ nói 12345-67890.
Nó không cần phải
là bất cứ điều gì có ý nghĩa, nó chỉ là một chìa khóa có thể được sử dụng bởi trình
phân tích cookie của chúng tôi để mã hóa
thông tin và ký cookie được gửi từ máy chủ đến máy khách.
Vì vậy, một khi chúng tôi thiết lập trình phân tích cookie của chúng tôi để xử lý các cookie đã ký,
vì vậy sau đó trong ủy quyền chính nó,
vì vậy bạn thấy rằng chúng tôi có ủy quyền mà chúng tôi đã xây dựng ở đây.
Bây giờ, trong phạm vi ủy quyền,
những gì chúng tôi sẽ làm là,
lần đầu tiên người dùng cố gắng truy cập vào máy chủ,
chúng tôi sẽ mong đợi người dùng ủy quyền cho bản thân mình.
Sau đó, chúng tôi sẽ thiết lập cookie ở phía khách hàng từ máy chủ và
sau đó khách hàng không phải
tiếp tục gửi thông tin xác thực cơ bản một cách rõ ràng.
Thay vào đó, khách hàng sẽ chỉ cần bao gồm cookie trong yêu cầu gửi đi.
Vì chúng tôi đang sử dụng cookie đã ký ở đây, vì vậy,
khi yêu cầu đến,
vì vậy chúng tôi sẽ xử lý điều đó bên trong ủy quyền.
Bây giờ, bạn nhớ lại rằng chúng tôi đã thiết lập các middleware ủy quyền ở đây.
Vì vậy, chúng tôi sẽ sửa đổi này middleware ủy quyền để làm cho việc sử dụng
cookie thay vì tiêu đề ủy quyền.
Vì vậy, những gì chúng tôi sẽ làm ở đây là,
chúng tôi sẽ nói “console.log” và sau đó chúng tôi sẽ,
“console.log (Req.SignedCookies)” để chúng tôi thấy những gì thực sự được
bao gồm trong cookie đã ký ở đây.
Bây giờ, cũng sau này,
những gì chúng ta sẽ làm là chúng ta sẽ nói, “Nếu (! Req.signedCookies.User)”.
Người dùng sẽ là một tài sản mà chúng tôi sẽ thiết lập
trong cookie đã ký vì bạn sẽ thấy một
chút sau đó chúng tôi sẽ thiết lập cookie đã ký.
Vì vậy, nếu yêu cầu đến không bao gồm trường người dùng trong cookie đã ký,
và sau đó điều đó có nghĩa là người dùng chưa được ủy quyền.
Vì vậy, trong trường hợp đó,
những gì chúng tôi sẽ làm là mong đợi người dùng để xác thực chính mình.
Vì vậy, sau đó, chúng tôi sẽ làm tất cả phần này ở đây.
Vì vậy, lưu ý rằng chúng tôi đã thực hiện điều này
trước đó, nơi chúng tôi đang xử lý tiêu đề xác thực.
Vì vậy, chúng tôi sẽ lấy tất cả các phần này,
tất cả các cách lên đến này “khác” ở đây và sau đó bao gồm rằng bên trong ở đây.
Vì vậy, về cơ bản, những gì chúng tôi đang xác định ở đây là,
hãy để tôi thụt lề nó.
Như bạn thấy, tôi rất đặc biệt về thụt lề của tôi
bởi vì điều đó giữ mã dễ đọc hơn.
Vì vậy, bên trong này nếu,
vì vậy đây là điểm kết thúc của nếu của cái này ở đây.
Vì vậy, chúng tôi đang nói nếu cookie đã ký không chứa tài sản người dùng trên nó,
sau đó chúng tôi mong đợi người dùng để ủy quyền bằng cách bao gồm tiêu đề ủy quyền.
Vì vậy, chúng tôi sẽ tìm kiếm tiêu đề ủy quyền.
Nếu tiêu đề ủy quyền không có sẵn,
thì chúng tôi sẽ chỉ đơn giản là từ chối người dùng và nhắc
người dùng nhập tên người dùng và mật khẩu như chúng tôi đã làm trong bài tập trước.
Nếu tiêu đề ủy quyền được bao gồm,
sau đó chúng tôi sẽ xử lý tiêu đề ủy quyền giống như chúng tôi đã làm trước đây,
và nếu người dùng là người dùng được ủy quyền,
hãy nhớ lại rằng chúng tôi gọi tiếp theo để cho người dùng tiến hành.
Bây giờ tại thời điểm này,
những gì chúng tôi sẽ làm là chúng tôi sẽ nói,
chúng tôi sẽ thiết lập các cookie tại thời điểm này.
Vì vậy, đây là nơi chúng tôi sẽ sử dụng cookie res ở đây.
Lưu ý rằng cookie không tồn tại,
vì vậy chúng tôi sẽ nói “res.cookie”.
Như bạn có thể thấy, res cookie chính nó lấy chuỗi tên giá trị đầu tiên,
chuỗi giá trị và các tùy chọn, tùy chọn cookie.
Đặt tên cookie thành giá trị với các tùy chọn nhất định và các tùy chọn được bao gồm ở đây,
một số tùy chọn cho cookie ở đây.
Tôi sẽ chỉ đơn giản là sử dụng một vài trong số các tùy chọn ở đây.
Vì vậy, chúng tôi sẽ nói, “res.cookie” và sau đó tôi sẽ thiết lập các cookie với người dùng tên.
Bây giờ nhận thấy rằng đây là lý do tại sao tôi đang
kiểm tra cho req.signedCookies.User lên đó.
Vì vậy, chúng tôi sẽ nói “res.cookie ('user',)” và
lĩnh vực người dùng tôi sẽ thiết lập nó để 'admin' và
sau đó tôi sẽ thiết lập này để là một cookie đã ký.
Vì vậy, tôi sẽ nói “ký: true.”
Vì vậy, điều đó có nghĩa là trình phân tích cookie của tôi sẽ đảm bảo
rằng cookie này sẽ được ký và thiết lập.
Vì vậy, đây là tùy chọn mà tôi thiết lập cho các res cookie ở đây.
Vì vậy, điều này sẽ bao gồm
tên cụ thể này vào cookie đã ký với giá trị cụ thể này.
Vì vậy, đó là lý do tại sao tôi có thể kiểm tra giá trị đó ở đây.
Vì vậy, nếu điều này không tồn tại,
sau đó tất nhiên tôi mong đợi người dùng để xác thực bằng cách sử dụng xác thực cơ
bản, và nếu xác thực cơ bản là thành công,
sau đó tôi sẽ thiết lập cookie ở đây và thiết lập
trường cookie trong thông báo phản hồi gửi đi ở đây và
điều này sẽ nhắc nhở khách hàng để thiết lập cookie ở phía khách hàng và sau đó
tất cả các yêu cầu tiếp theo sẽ bao gồm cookie này trong yêu cầu khách hàng.
Vì vậy, đó là cách tôi xử lý thực tế khi cookie.user không tồn tại.
Ở đó. Nếu nó tồn tại,
sau đó phần khác,
do đó có nghĩa là cookie đã ký đã
tồn tại và tài sản người dùng được xác định trên đó,
sau đó trong khác,
những gì tôi sẽ kiểm tra là
nếu Req.signedCookies.User là admin.
Sau đó, điều đó có nghĩa là cookie đã ký chứa thông tin chính xác.
Sau đó, tôi sẽ nói tiếp.
Vì vậy, điều đó có nghĩa là bạn sẽ cho phép yêu cầu để đi qua.
Nếu không, cookie này không hợp lệ vì nó không chứa giá trị chính xác này.
Vì vậy, điều đó có nghĩa rằng đây là một lỗi.
Vì vậy, trong trường hợp này,
chúng tôi sẽ nói rằng bạn không được chứng thực,
và sau đó chúng tôi sẽ chỉ đơn giản là gây ra lỗi trong thời điểm này.
Bây giờ, chúng tôi sẽ không nhắc người dùng cho
phiên vì điều đó phải được thực hiện trước đó.
Bây giờ, thông thường, điều này sẽ không xảy ra
bởi vì nếu cookie đã được thiết lập ở phía khách hàng,
sau đó nó phải bao gồm giá trị chính xác anyway.
Nhưng vì lợi ích của sự hoàn chỉnh,
tôi cũng đã bao gồm kiểm tra lỗi khác ở đây tại thời điểm này. Đó là nó.
Với thiết lập này, chúng tôi đã biến
ứng dụng nhanh của chúng tôi thành một ứng dụng xử lý cookie ở đây.
Lưu ý một lần nữa, hãy để tôi thu hút sự chú ý của bạn vào những gì chúng tôi đang làm ở đây một lần nữa.
Ở đây, chúng tôi đang kiểm tra để đảm bảo
rằng thuộc tính người dùng trong các cookie đã ký không tồn tại,
hoặc thậm chí chính cookie đã ký không tồn tại.
Sau đó, chúng tôi sẽ mong đợi sự ủy quyền cơ bản sẽ được thực hiện.
Nếu ủy quyền thành công,
sau đó tôi sẽ thiết lập cookie bằng cách sử dụng res.cookie ở đây.
Sau đó, tất cả các yêu cầu tiếp theo sẽ mang theo cookie đã ký,
và sau đó tôi sẽ kiểm tra xem cookie đã ký là
một cookie đã ký hợp lệ và chứa thuộc tính người dùng được thiết lập bằng admin.
Nếu có, thì đây là quyền truy cập được ủy quyền,
vì vậy nó sẽ cho phép tiếp tục.
Nếu không, sau đó tôi đưa ra một lỗi tại thời điểm này.
Sửa chữa nhỏ, các phiên bản mới của Node.js mong đợi bạn sử dụng này như bộ
đệm mới.Từ thay vì bộ đệm mới để đối phó với một số vấn đề bảo mật.
Vì vậy, chỉ cần sửa dòng này để bộ đệm mới.from. Đó là nó.
Hãy lưu các thay đổi và sau đó đi và nhìn vào ứng dụng của chúng tôi trong Postman đó.
Nếu máy chủ trước đó đang chạy,
chỉ cần dừng nó bằng cách gõ Control C,
và sau đó khởi động lại máy chủ bằng cách nói npm bắt đầu.
Tất nhiên, hãy chắc chắn rằng máy chủ MongoDB của bạn đang hoạt động và chạy.
Nếu không, máy chủ thể hiện của bạn sẽ không khởi động một cách chính xác.
Vì vậy, một khi máy chủ nhanh của bạn được bắt đầu,
sau đó chúng ta hãy đi đến Postman của chúng tôi và cố gắng kết nối với máy chủ.
Và tôi sẽ trình bày một vài khía cạnh về cách xử lý cookie.
Bây giờ, đi đến Postman,
để tôi xóa tất cả thông tin này
từ Postman của tôi và sau đó chúng tôi sẽ bắt đầu với những điều cơ bản.
Vì vậy, hãy để tôi cố gắng truy cập vào localhost:3000/món ăn.
Bây giờ, sau khi tôi đã xóa tất cả mọi thứ,
tôi sẽ gửi yêu cầu và lưu lại.
Và từ phía máy chủ,
nó nói rằng bạn không được chứng thực.
Sau đó, khi bạn nhìn vào tiêu đề,
điều này là yêu cầu tôi xác thực bằng cách sử dụng WWW xác thực.
Vì vậy, bây giờ, hãy để tôi đi vào ủy quyền và sau đó thiết lập ủy quyền cơ bản,
và sau đó tôi sẽ thiết lập ủy quyền như quản trị viên,
và sau đó mật khẩu, và sau đó cập nhật yêu cầu để các tiêu đề
bây giờ sẽ chứa tiêu đề ủy quyền ở đây với các thông tin có.
Và sau đó cho phép tôi gửi yêu cầu Git về phần này.
Nếu tôi gửi yêu cầu Git,
sau đó để đáp lại, bạn thấy rằng yêu cầu Git đã thành công.
Lưu ý cũng là một vài điều nữa.
Bạn sẽ thấy trạng thái là 200 OK.
Cũng lưu ý rằng một cookie đã được thiết lập ở phía khách hàng của chúng tôi trong bên Postman ở đây.
Cookie này chứa thông tin.
Chúng tôi sẽ xem xét các chi tiết của cookie trong một phút.
Sau đó, khi bạn nhìn vào tiêu đề,
bạn thấy trong tiêu đề giá trị này ở đây nói Set-Cookie,
và sau đó thông tin này đến ở đây.
Bây giờ, nếu bạn nhìn vào nó một cách cẩn thận,
bạn sẽ thấy một cái gì đó ở đây nói người dùng bằng,
và sau đó bạn thấy giá trị này ở đây, quản trị viên ở đó.
Vì vậy, bạn nhận thấy rằng một cái gì đó đã được kèm theo bên trong cookie.
Nếu bạn muốn thực sự kiểm tra các cookie,
đi lên đây trong Postman và sau đó nhấp vào các phím này,
và sau đó điều này sẽ hiển thị cho bạn tất cả các cookie đã được thiết lập ở phía khách hàng này.
Sau đó, đặc biệt, bây giờ hãy để tôi xóa tất cả các cookie khác.
Tôi có thể đã sử dụng một số trong số này vì một số lý do khác.
Vậy hãy để tôi dọn sạch những chiếc bánh quy đó.
Dù sao, nếu bạn nhìn thấy chúng,
bạn chỉ có thể để chúng ở đó.
Không phải là một vấn đề lớn.
Tập trung đặc biệt vào máy chủ địa phương ở đây,
và sau đó bạn thấy cookie này ở đây.
Chỉ cần nhấp vào cookie,
và sau đó bạn thấy giá trị thực tế bên trong cookie được lưu trữ ở đó.
Sau đó, cũng là ngày hết hạn cho rằng thiết lập cookie ở đây.
Bây giờ, giá trị này sẽ chính xác những gì bạn nhìn thấy
trong cookie thiết lập mà đến từ phía máy chủ.
Bây giờ, điều này cũng có nghĩa là trong các yêu cầu tiếp theo đi vào, vì
vậy ngay cả khi tôi xóa ủy quyền của tôi,
và ngay cả khi tôi loại bỏ tiêu đề ủy quyền,
bởi vì cookie đã được thiết lập,
cookie này đã được thiết lập trên máy chủ địa phương của tôi,
mọi yêu cầu tiếp theo đi đến máy chủ này sẽ bao gồm cookie này.
Vì vậy, mặc dù tôi sẽ không có các tiêu đề thiết lập ở đó,
nếu tôi gửi yêu cầu,
bạn sẽ nhận thấy rằng yêu cầu Git hoạt động giống như trước đây mà không có bất kỳ vấn đề,
bởi vì thực tế là mỗi yêu cầu đi sẽ tự động bao gồm
cookie này trong yêu cầu đi từ Postman của tôi ở đây.
Điều này thể hiện việc sử dụng cookie trong ứng dụng của chúng tôi.
Với điều này, chúng tôi đã thấy cách cookie có thể được thiết lập và
xử lý trong máy chủ express của chúng tôi bằng cách sử dụng trình phân tích cookie
và cách chúng tôi có thể thiết lập cookie đã ký.
Đây là thời điểm tốt để bạn thực hiện một cam kết git với cookie tin nhắn.