Trong các bài học trước đây,
chúng ta đã thấy nhiều chiến lược khác nhau để xác thực người dùng.
Chúng tôi bắt đầu với xác thực cơ bản,
và sau đó chuyển sang cookie và thể hiện phiên
như một cách để xác thực và theo dõi người dùng.
Trong bài học này, chúng ta sẽ xem xét Passport,
một mô-đun nút làm cho xác thực khá dễ dàng,
không phô trương và đơn giản để cấu hình trong ứng dụng của bạn.
Passport là gì ngoài một middleware xác thực hỗ trợ
các chiến lược khác nhau có thể được sử dụng để xác thực người dùng,
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,
hoặc thậm chí xác thực bên thứ ba hoặc sử dụng OAuth hoặc OAuth 2.0,
như sử dụng Facebook, Twitter,
hoặc Google+, v.v.
Chúng tôi sẽ xem xét một số chi tiết về Hộ chiếu,
xác thực địa phương được hỗ trợ Hộ chiếu.
Và trong bài tập sau đây,
chúng tôi sẽ cập nhật ứng dụng của chúng tôi để sử dụng các
mô-đun Passport và Passport-Local Node để kích hoạt.
xác thực cục bộ bằng tên người dùng và mật khẩu.
Vì vậy, như tôi đã nói một chút trước đó,
Hộ chiếu là một middleware xác thực rất hữu ích cho các ứng dụng Node.js.
Nó làm cho nó đơn giản hơn để thực hiện xác thực.
Như chúng ta đã thấy trong các bài tập trước đó,
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
và nghĩ ra cách kiểm tra
xác thực người dùng và sau đó xác thực người dùng và vân vân.
Tất cả điều này được đơn giản hóa trong Hộ chiếu bằng cách sử dụng
các chiến lược khác nhau có thể được sử dụng để xác thực người dùng.
Bạn có thể sử dụng một chiến lược địa phương ví dụ dựa trên việc
đă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,
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.
Passport cũng hỗ trợ xác thực dựa trên OpenID
hoặc xác thực dựa trên OAuth hoặc OAuth 2.0,
như được hỗ trợ bởi các trình xác thực của bên thứ ba như Facebook
, Twitter, Google+, v.v.
Chúng tôi cũng có thể sử dụng những gì được gọi là
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.
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.
Ngoài ra, Hộ chiếu hỗ trợ các phiên.
Như chúng ta đã thấy trong bài tập trước đó và bài học trước đó,
phiên nhanh là một cách dễ dàng
để 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.
Để sử dụng Hộ chiếu, tất nhiên,
chúng tôi sẽ cài đặt mô-đun Hộ chiếu.
Chúng tôi cũng sẽ, trong bài tập sau đây,
cài đặt mô-đun Passport-Local để
cung cấp chiến lược địa phương để xác thực người dùng.
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.
Trên các tuyến đường mà chúng tôi muốn thực hiện xác thực,
chúng tôi chỉ cần xác định chứng thực hộ chiếu và sau đó xác
đị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.
Như một ví dụ ở đây,
bạn thấy rằng chúng tôi đang áp dụng
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.
Và vì vậy nó sử dụng chiến lược địa phương để xác thực người dùng.
Nếu xác thực thành công,
thì phần mềm trung gian sẽ chuyển sang bước tiếp theo,
nơi chúng ta có thể tiếp tục xử lý yêu cầu đến.
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ộ
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.
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 đó,
mà sau đó chúng tôi có thể sử dụng trong
ứ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ể.
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
ứng dụng của chúng tôi và do đó phục vụ
yêu cầu phù hợp dựa trên danh tính của người dùng.
Cùng với Hộ chiếu, chúng tôi sẽ cài đặt
một mô-đun liên quan đến Hộ chiếu khác có tên Passport-Local.
Passport-Local hỗ trợ một chiến lược được gọi là chiến
lược địa phương để xác thực người dùng
với sự kết hợp mật khẩu tên người dùng tiêu chuẩn.
Vì vậy, chúng tôi thiết lập lược đồ người dùng,
như chúng tôi đã làm trước đây,
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à
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.
Vì vậy, để cài đặt nó một lần nữa,
là một mô-đun Node,
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.
Một khi mô-đun Passport-Local Node được cài đặt,
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.
Vì vậy, để xác định một chiến lược địa phương, chúng ta sẽ nói;
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.
Vì vậy, khi cài đặt Passport-Local,
chúng tôi sẽ tuyên bố một chiến lược địa phương mới và sau đó cung cấp
chức năng xác minh tương ứng được sử dụng để xác minh người dùng.
Nếu bạn đang sử dụng một MongoDB như cửa hàng back-end, sau đó,
để giúp chúng tôi với chiến lược Passport-Local,
có một mô-đun khác được gọi là Passport-Local Mongoose.
Mô-đun Passport-Local Mongoose cung cấp
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.
Bằng cách cài đặt plugin Passport-Local Mongoose và
sau đó sử dụng nó khi chúng tôi xác định lược đồ người dùng và mô hình,
và do đó sử dụng sự hỗ trợ của mô-đun Passport-Local Mongoose,
plugin mongoose này thêm vào tên người dùng và
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.
Việc mã hóa được thực hiện bằng cách sử dụng băm
trên mật khẩu mà chúng tôi sử dụng để đăng ký người dùng,
và bản thân băm sử dụng một trường muối.
Vì vậy, nếu bạn biết bất cứ điều gì về mật mã học,
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
các hoạt động băm trên mật khẩu để lưu trữ.
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.
Mật khẩu thực tế không được lưu trữ.
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,
mật khẩu sẽ được băm một lần nữa và sau đó so sánh với
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
cung cấp bởi plugin Mongoose, Passport-Local Mongoose.
Ngoài ra, Passport-Local Mongoose cũng bổ sung vào các phương pháp bổ sung
rất hữu ích cho việc cấu hình chiến lược Passport-Local.
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,
chúng tôi sẽ nhập khẩu Passport-Local Mongoose và sau đó thêm
vào như là plugin cho lược đồ người dùng.
Mô-đun Passport-Local Mongoose này tự động
như tôi đã nói thêm trường tên người dùng và cũng
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,
và cũng cung cấp các phương pháp bổ sung cho
phép chúng tôi cấu hình chiến lược Passport-Local của chúng tôi.
Nếu chúng ta đang sử dụng mô-đun Passport-Local Mongoose,
thì chiến lược cục
bộ, plugin Passport-Local Mongoose hỗ trợ trên
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.
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.
Bây giờ điều này được tự động cung cấp cho bạn bởi Passport-Local Mongoose
bằng cách chỉ đơn giản là nói mới localstrategy user.authenticate.
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.
Ngoài ra nếu bạn đang sử dụng phiên được hỗ trợ bởi hộ chiếu
, sau đó, để hỗ trợ phiên,
thông tin người dùng cần phải được serialized để
được lưu trữ với thông tin phiên ở phía máy chủ và sau đó,
khi yêu cầu đi vào,
từ phiên ID,
thông tin người dùng cần phải được deserialized để trích xuất
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ủ.
Bây giờ serialization và
deserialization hoạt động này đã được hỗ trợ bởi Passport-Local Mongoose thông qua
người dùng serialize và
các phương pháp người dùng deserialize có sẵn từ Plugin Passport-Local Mongoose.
Vì vậy, khi nhìn thấy điều này,
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
chiến lược địa phương để xác thực người dùng sử dụng
Passport, Passport-Local và Passport-Local Mongoose Node.