6

के बाद सत्र और res.send() अक्षम करें: passport-google-oauth2 का उपयोग करना।पासपोर्ट और जेडब्ल्यूटी और Google रणनीति - Google कॉलबैक

मैं Google लॉगिन के साथ JWT का उपयोग करना चाहता हूं - इसके लिए मुझे disable session की आवश्यकता है और किसी भी तरह से उपयोगकर्ता मॉडल को क्लाइंट पर वापस भेज दें। सभी उदाहरण Google कॉलबैक का उपयोग कर रहे हैं जो magically redirect to '/' है।

मैं कैसे कर सकता हूं:
1. पासपोर्ट-google-oauth2 का उपयोग करते समय सत्र अक्षम करें।
2. res.send() उपयोगकर्ता को Google प्रमाणीकरण के बाद क्लाइंट के लिए उपयोगकर्ता।

यदि मैं सही दिशा में नहीं हूं तो विकल्पों का सुझाव देने के लिए स्वतंत्र महसूस करें।

+0

इसे देखें - यह स्पष्ट रूप से स्पष्ट करता है। https://cloud.google.com/nodejs/getting-started/authenticate-users –

+0

@MuliYulzary धन्यवाद, लेकिन उदाहरण में आपने दिया कि सत्र का अत्यधिक उपयोग है जिसे मैं टालने का प्रयास करता हूं। – chenop

उत्तर

4

कुछ मिली जानकारी के आधार इस पर काबू पाने के लिए प्रबंधित: एक्सप्रेस में
1. अक्षम सत्र - बस सत्र के मिडलवेयर हटाने

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

2. जब गूगल प्रमाणीकरण का उपयोग क्या वास्तव में होता है एक रीडायरेक्शन नहीं है Google लॉगिन पेज पर और यदि लॉगिन सफल होता है तो यह आपको प्रदान किए गए यूआरएल के साथ वापस भेज देता है।

इसका वास्तव में मतलब है कि एक बार Google कॉलबैक को कॉल करने के बाद आप res.send (टोकन, उपयोगकर्ता) नहीं कर सकते - यह बस काम नहीं करता है (कोई भी विस्तार क्यों कर सकता है?)। तो आप res.redirect("/") कर क्लाइंट को रीडायरेक्ट करने के लिए मजबूर हैं। लेकिन पूरा उद्देश्य टोकन को पास करना है ताकि आप 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); 
     }); 

लेकिन क्लाइंट उपयोगकर्ता इकाई कैसे प्राप्त करेगा? तो आप उपयोगकर्ता को उसी तरह से पास भी कर सकते हैं लेकिन यह मेरे लिए सही नहीं लगा (पैरामीटर सूची में पूरी उपयोगकर्ता इकाई को पास कर रहा है ...)। तो मैंने जो किया वह क्लाइंट टोकन का उपयोग करता है और उपयोगकर्ता को पुनर्प्राप्त करता है।

function handleNewToken(token) { 
     if (!token) 
      return; 

     localStorageService.set('token', token); 

     // Fetch activeUser 
     $http.get("/api/authenticate/" + token) 
      .then(function (result) { 
       setActiveUser(result.data); 
     }); 
    } 

जिसका अर्थ है एक और http अनुरोध - यह मुझे ऐसा लगता है कि शायद मुझे टोकन अवधारणा सही नहीं मिली। मुझे प्रबुद्ध करने के लिए स्वतंत्र महसूस करें।

+0

क्या आप किसी तरह के समाधान के साथ आए हैं? मुझे एक ही समस्या है और मैं Google कॉलबैक रीडायरेक्ट – lomboboo

+0

के बाद हेडर सेट नहीं कर सकता हूं कृपया [पासपोर्ट-google-oauth-jwt] (https://www.npmjs.com/package/passport-google-oauth-jwt) भी देखें बहुत उपयोगी यदि आप सत्र – Gagan

+0

का उपयोग नहीं करना चाहते हैं और यदि आप सत्र का उपयोग नहीं करना चाहते हैं तो कृपया [passpor-jwt] (https://www.npmjs.com/package/passport-jwt) – Gagan

संबंधित मुद्दे