2015-06-08 26 views
5

जारी नहीं रहेगा मैं अपने स्वयं-होस्ट किए गए node.js सर्वर के भीतर parseExpressCookieSession मॉड्यूल का उपयोग करने का प्रयास कर रहा हूं जो सर्वर-साइड पर पार्स जावास्क्रिप्ट एसडीके मॉड्यूल का उपयोग करता है। मैं Parse.User.current() ऑब्जेक्ट में उपयोगकर्ता सत्रों को स्वचालित रूप से जारी रखने के लिए सर्वर सेट अप करने के लिए यहां दिए गए निर्देशों का पालन कर रहा हूं।पार्स/नोड.जेएस, उपयोगकर्ता सत्र प्रबंधन (जावास्क्रिप्ट एसडीके)। Parse.User.current()

हालांकि, Parse.User.current() ऑब्जेक्ट हमेशा सफल लॉगिन के बाद node.js सर्वर पर नए अनुरोध करने पर शून्य है। संलग्न मेरे server.js फ़ाइल के लिए सेट अप कोड है।

server.js:

var express = require('express'); 
var app  = express();        // create our app w/ express 
var morgan = require('morgan');    // log requests to the console (express4) 
var bodyParser = require('body-parser'); // pull information from HTML POST (express4) 
var methodOverride = require('method-override'); // simulate DELETE and PUT (express4) 
var logger = require('./logger'); 
var api = require('./api.js'); 
var config = require('./config'); 
GLOBAL.Parse = require('parse').Parse; 
Parse.initialize(config.parse.appID, config.parse.jsKey); 
var cookieParser = require('cookie-parser'); 
var parseExpressHttpsRedirect = require('parse-express-https-redirect'); 
var parseExpressCookieSession = require('parse-express-cookie-session'); 

// configuration ================= 
app.use(parseExpressHttpsRedirect()); 
app.use(express.static(__dirname + '/public'));  
app.use(morgan("dev", { "stream": logger.stream })); 
app.use(bodyParser.urlencoded({'extended':'true'})); 
app.use(bodyParser.json()); 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); 
app.use(methodOverride()); 
app.use(cookieParser(config.parse.jsKey)); 
app.use(parseExpressCookieSession({ cookie: { maxAge: 3600000 } })); 
+0

हाय @ptsimpso! क्या आपको कभी इसका कोई समाधान मिला? मैं एक समान सेटअप पर काम कर रहा हूं और आपके पास समान समस्याएं चल रहा हूं। बहुत धन्यवाद! – user3753098

+0

क्या आपको इस समस्या का समाधान मिला? मैं अपने आप को इस बारे में नहीं लग रहा है। @ptsimpso – user3753098

+0

ग्लोबल.पर्स = आवश्यकता ('पार्स')। पार्स; क्या आप पार्स के लिए ग्लोबल का उपयोग करने से डरते हैं? – Amir

उत्तर

4

मैं पार्स के Parse.User.become() के बजाय पार्स एक्सप्रेस कुकी मिडलवेयर उपयोग करने का प्रयास की विधि का उपयोग कर समाप्त हो गया। आप CookieParser और CookieSession संकुल का उपयोग करने के लिए और उन्हें शामिल हैं:

var cookieParser = require('cookie-parser'); 
var cookieSession = require('cookie-session'); 

उन्हें सेट करें:

app.use(cookieSession({ 
    name: COOKIE_NAME, 
    secret: COOKIE_SECRET, 
    maxAge: 15724800000 
})); 

app.use(cookieParser(COOKIE_SECRET)); 

अपनी प्रवेश में और कार्यों साइन अप करें, आपकी कुकी में उपयोगकर्ता के सत्र टोकन सेट:

Parse.User.logIn(username, password, { 
     success: function(user) { 
     console.log(user); 
     req.session.token = user._sessionToken; 
     res.sendStatus(200); 
     }, 
     error: function(user, error) { 
     res.status(400).send(error); 
     } 
    }); 

और अंत में, किसी भी अनुरोध है कि एक उपयोगकर्ता की आवश्यकता हो सकती में लॉग इन करने के लिए जवाब देने से पहले, अगर एक sessionToken कुकी में मौजूद है और फिर उस सत्र toke का उपयोग कर उपयोगकर्ता सेट देखने के लिए जाँच n:

Parse.User.become(req.session.token ? req.session.token : "NoTokenFound").then(function (user) { 
     // Do something now that we have a Parse.User stored in the "user" var 
    }, function (error) { 
     console.log(error); 
     res.sendStatus(200); 
    }); 
+3

यह ध्यान देने योग्य है कि 'Parse.User.become' को पार्स-सर्वर में बहिष्कृत और अनुपलब्ध है। – woodardj

0

Parse.User.enableUnsafeCurrentUser()

यह undocumented, लेकिन काम करता है। मुझे नहीं पता कि पार्स के रखरखाव क्यों Parse.User.current() काम करना बंद कर देते हैं और फिर आपको कुछ अनियंत्रित कामकाज के लिए हमेशा के लिए खोजना है।

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