6

Sử dụng: passport-google-oauth2.Hộ chiếu & JWT & Chiến lược của Google - Tắt phiên & res.send() sau khi gọi lại google

Tôi muốn sử dụng JWT bằng thông tin đăng nhập Google - để tôi cần phải disable session và bằng cách nào đó chuyển mô hình người dùng lại cho khách hàng. Tất cả các ví dụ đang sử dụng gọi lại google magically redirect to '/'.

Làm cách nào để:
1. Tắt phiên khi sử dụng hộ chiếu-google-oauth2.
2. res.send() người dùng cho khách hàng sau khi xác thực google.

Hãy đề xuất các lựa chọn thay thế nếu tôi không đi đúng hướng.

+0

Kiểm tra điều này - Giải thích khá rõ ràng. https://cloud.google.com/nodejs/getting-started/authenticate-users –

+0

@MuliYulzary Cảm ơn bạn, nhưng trong ví dụ bạn đã cho phép sử dụng quá nhiều phiên mà tôi cố gắng tránh. – chenop

Trả lời

4

Quản lý để khắc phục điều này với một số hiểu biết:
1. disable phiên nhanh - chỉ cần loại bỏ các middleware phiên

// app.use(session({secret: config.secret})) 

2. khi sử dụng xác thực của Google những gì thực sự xảy ra là có một chuyển hướng đến trang đăng nhập google và nếu đăng nhập thành công, nó sẽ chuyển hướng bạn trở lại với url bạn đã cung cấp. Điều này thực sự có nghĩa là một khi google gọi lại gọi lại của bạn, bạn không thể thực hiện res.send (token, user) - nó đơn giản là không hoạt động (bất cứ ai cũng có thể giải thích tại sao?). Vì vậy, bạn buộc phải thực hiện chuyển hướng cho khách hàng bằng cách thực hiện res.redirect("/"). Nhưng toàn bộ mục đích là chuyển mã thông báo để bạn cũng có thể thực hiện res.redirect("/?token=" + token).

app.get('/auth/google/callback', 
     passport.authenticate('google', { 
      //successRedirect: '/', 
      failureRedirect: '/' 
      , session: false 
     }), 
     function(req, res) { 
      var token = AuthService.encode(req.user); 
      res.redirect("/home?token=" + token); 
     }); 

Nhưng cách khách hàng sẽ nhận được thực thể người dùng? Vì vậy, bạn cũng có thể chuyển người dùng theo cùng một cách nhưng nó không cảm thấy phù hợp với tôi (chuyển toàn bộ thực thể người dùng trong danh sách tham số ...). Vì vậy, những gì tôi đã làm là làm cho khách hàng sử dụng mã thông báo và truy xuất người dùng.

Có nghĩa là một yêu cầu http khác - Điều này khiến tôi nghĩ rằng có lẽ tôi không hiểu đúng khái niệm mã thông báo. Hãy soi sáng tôi.

+0

bạn có đi kèm với một số giải pháp không? Tôi gặp vấn đề tương tự và tôi không thể đặt tiêu đề sau khi chuyển hướng gọi lại của Google – lomboboo

+0

Vui lòng kiểm tra [passport-google-oauth-jwt] (https://www.npmjs.com/package/passport-google-oauth-jwt) cũng rất hữu ích nếu bạn không muốn sử dụng phiên – Gagan

+0

Và nếu bạn không muốn sử dụng phiên, vui lòng sử dụng [passpor-jwt] (https://www.npmjs.com/package/passport-jwt) – Gagan

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