Thắc mắc về thư viện Passport js
Chào các bạn, mình đang tìm hiểu về thư viện passportjs, mình hiểu đó là một thư viện cung cấp các middleware để xử lý xác thực người dùng trong ứng dụng nodejs và express. Mình thấy điểm mạnh của nó là cung cấp một số cách xác thực thông qua tài khoản của bên thứ 3 như : Facebook, Google, Twiter ... Còn về cách thức authenticate kiểu local ( người dùng login bằng username - password) thì mình chưa hiểu tại sao cần dùng passport.
Bình thường mình hay thực hiện bằng cách lấy dữ liệu (username - password) gửi lên từ phía client, sau đó tìm userName trong DB, nếu tìm thấy thì tiếp tục compare password dưới client và password-hashed được lưu trong DB.
Mình cảm thấy như vậy là cũng đủ rồi, nhưng mình coi một số hướng dẫn trên mạng khi authenticate bằng cách này họ dùng luôn cả thư viện passport thì mình đang không hiểu mục đích để làm gì ? Liệu nó còn có thêm điểm mạnh gì nữa chăng.
Xin các bạn giải thích giúp mình chỗ này với. mình thực sự cám ơn !
3 CÂU TRẢ LỜI
Hiện tại có vô vàn các service SaaS cung cấp dịch vụ authentication: Google, Amazon, Oauth... Mình có thể liệt kê 1 số lợi ích của việc dùng các "dịch vụ xác thực người dùng" online do các service SaaS cung cấp như sau:
- Single Sign On: User sẽ có thể đăng nhập 1 lần và vào được tất cả các dịch vụ vì bạn có thể dùng lại cùng 1 jwt token cho nhiều app (web, mobile...)
- User có thể đăng nhập bằng mail hoặc tài khoản mạng xã hội. Cái này tăng trải nghiệm người dùng vì họ sẽ k cần vào tạo tài khoản trên trang của bạn và lưu db của bạn nữa, người dùng họ phải tạo mật khẩu mới và thường quên mật khẩu vì nhiều trang trang nào cũng đòi 1 tài khoản. Thay vào đó họ chỉ cần dùng gmail hoặc facebook là xong.
- Người dùng thậm chí có thể dùng số điện thoại để đăng nhập và nhận pass bằng sms. Rất tiện lợi với người già, người không có email hoặc tk mạng xã hội.
- Bảo mật và chống ăn cắp tài khoản tốt hơn bạn tự code rất rất nhiều lần.
- Bạn sẽ rảnh háng lo làm ăn, code business. Các phần nặng nhọc về quản lý user và phân quyền giờ k còn trong db của bạn nữa, trong code cũng k cần xử lý gì nữa.
- Bảo mật 2 lớp. Ví dụ sau khi login email thì còn phải vào email lấy code xác nhận. Hoặc gửi sms OTP xác nhận. Các app thanh toán luôn cần có xác thực 2 lớp này. Nếu bạn code thì cần code nguyên hệ thống gen mã và gửi mail, rồi xác thực. Bạn to tay thì code nguyên hệ thống gửi sms cũng đc nhưng sẽ tốn tiền thuê nhà mạng gửi sms. Sau k thuê cloud authen luôn đi cho rồi.
Còn nhiều lợi ích nữa của việc dùng cloud authentication, tuy hơi đắt 1 tí nhưng đắt xắt ra miếng nhé bạn.
Woa ... Mình cảm thấy như được mở mang thêm nhiều kiến thức mới. Điều đó thật thú vị. Cám ơn các bro đã nhiệt tình giúp đỡ mình
- Đối với login bằng form thì passport xử lý cho bạn giữ session trên server, ngoài ra có thể cung cấp 1 số phương thức như kiểm tra user đã login hay chưa..
- Đối với authen bằng jwt thì passport sẽ callback lại cho bạn current_user.
Passport sẽ xử lý các công việc này cho bạn. Nếu k sử dụng passport thì hoàn toàn có thể code chay đc =))
thank bạn đã cho mình thêm key-word để tìm hiểu. Mình sẽ search để hiểu thêm ạ
@thanh_tuan Bạn có thể tìm thiểu thêm về sesion xem nó hoạt động ra sao, xử lý session như thế nào đối với ngôn ngữ bạn đang code.
Rồi bạn có thể tự code flow login hoàn chỉnh không dùng thư viện để hiểu hơn.
còn đối với jwt thì bạn nghiên cứu thêm như login with jwt token, api, restful api, authenticate with jwt token
@duchv2307 thank bro nha