2015-10-05 21 views
8

Hộ chiếu có vẻ như là một lựa chọn tuyệt vời để xác thực đơn giản, không phô trương và không khó thiết lập. Tôi đang xây dựng một ngăn xếp MEAN xác thực bằng cách sử dụng JWT vì vậy tôi nhìn vào Passport JWT. Tuy nhiên có một vài điều tôi đang bối rối.Hộ chiếu JWT & Authorize vs Authenticate

1) Tôi có đúng khi giả định rằng JWT Passport chỉ được sử dụng để xác thực yêu cầu, không phải để tạo jwt hợp lệ không? Tức là, nó chỉ nên được sử dụng để xác nhận sự hiện diện của một mã thông báo?

2) Sự khác nhau giữa passport.authorizepassport.authenticate là gì? Và khi nào tôi nên sử dụng cái kia?

3) Tôi có 3 tuyến đường tôi đang sử dụng cho các vấn đề liên quan đến xác thực, login, signupauthenticate.

login sẽ kiểm tra xem kết hợp email/mật khẩu người dùng có tồn tại không và khớp với rồi tạo mã thông báo cho khách hàng. signup sẽ kiểm tra để đảm bảo email chưa tồn tại và sau đó tạo mã thông báo cho khách hàng. Bây giờ cho authenticate đây là nơi tôi nhận được một chút hỗn hợp. Tôi có cần một tuyến đường authenticate nếu tôi đã có loginsignup không? Nếu có bất cứ điều gì, có vẻ như xác thực sẽ là chức năng mà tôi chuyển vào passport.use cho chiến lược JWT và sau đó loginsignup với việc bổ sung tuyến đường verify_token sẽ là tuyến đường không được bảo vệ của tôi, nơi mọi thứ khác sẽ có cuộc gọi đến passport.authenticate hoặc passport.authorize.

Trả lời

4
  1. Đúng. Hộ chiếu JWT (hộ chiếu-jwt) chỉ để xác thực yêu cầu. Bạn sẽ cần một công cụ khác để thực sự tạo ra một mã thông báo. This tutorial sử dụng JWT đơn giản (jwt-đơn giản) và tôi đã sử dụng jsonwebtoken (mỗi this reference).
  2. Tôi chưa thấy bất kỳ tham chiếu nào đến passport.authorize, vì vậy tôi tin rằng passport.authenticate là những gì bạn đang tìm kiếm. passport.authenticate là những gì bạn sẽ sử dụng trong các tuyến đường của mình để xác minh rằng yêu cầu đến có mã thông báo JWT và được cho phép.
  3. Vì bạn đang tạo mã thông báo qua cả hai loginsignup, authenticate là không cần thiết và không cần thiết. Chỉ cần đảm bảo bạn sử dụng passport.authenticate trong các tuyến đường của mình để xác minh quyền truy cập trong khi yêu cầu.

Các bước cài đặt chung cần lưu ý ở đây là:

  • hộ chiếu-JWT là để xác thực
  • bạn cần một công cụ để tạo ra một JWT thẻ
  • token JWT, mà bạn tạo và trả về bất kỳ yêu cầu nào, cần phải có mặt trong tiêu đề ("Authorization: JWT eyJ0eXAiO...") theo yêu cầu tiếp theo
  • you need to setup your JWT strategy and tell passport to use it
  • sử dụng passport.authenticate để xác minh truy cập thông qua các dấu hiệu JWT trong tiêu đề cho các yêu cầu gửi đến, như:

router.post('/users', passport.authenticate('jwt', {session: false}), function(req, res) { 
 
    // do something... 
 
});

+0

xin vui lòng giúp đỡ nếu bạn có thể http://stackoverflow.com/questions/44044394/ how-to-set-jwtfromrequest-i-am-không-sử dụng-ủy quyền-ở đây @ user3006381 – Aditya

Các vấn đề liên quan