2015-06-08 14 views
5

Ben sunucu tarafında ayrıştırma JavaScript SDK modülü kullanan benim kendi kendine barındırılan node.js sunucu içindeki parseExpressCookieSession modülü kullanmak çalışılıyor kalıcı olmaz. Sunucuyu Parse.User.current() nesnesindeki kullanıcı oturumlarını otomatik olarak sürdürecek şekilde ayarlamak için burada bulunan yönergeleri izliyorum.Ayrıştırma/Node.js, kullanıcı oturumu yönetimi (javascript sdk). Parse.User.current()

Ancak Parse.User.current() nesnesi her zaman başarılı bir girişten sonra node.js sunucuya yeni istekleri yapmaya boş. Ekli, sunucu.js dosyamın kurulum kodudur.

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

Merhaba @ptsimpso! Buna bir çözüm buldunuz mu? Ben benzer bir kurulum üzerinde çalışıyorum ve sahip olduğunuz aynı sorunlara koşuyorum. Çok teşekkürler! – user3753098

+0

Bu soruna bir çözüm buldunuz mu? Bunu kendim halledemiyorum. @ptsimpso – user3753098

+0

GLOBAL.Parse = require ('parse'). Eğer Parse için küresel kullanarak korkuyor musunuz? – Amir

cevap

4

Ben ayrıştırmak en Parse.User.become() yerine Ayrıştırma Ekspres Kurabiye ortakatmanını teşebbüs yöntemi kullanılarak sona erdi. Sen CookieParser ve CookieSession paketlerini kullanmak zorunda ve onları şunlardır:

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

onları kurun: Giriş bilginiz olarak

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

app.use(cookieParser(COOKIE_SECRET)); 

ve işlevlerini kayıt olduğunuzda, çerezdeki kullanıcının oturum belirteci ayarlayın:

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); 
     } 
    }); 

Son olarak, bir kullanıcının oturum açmasını gerektirebilecek herhangi bir isteğe yanıt vermeden önce, çerezde bir sessionToken bulunup bulunmadığını kontrol edin ve ardından bu oturumu kullanarak toke'yi ayarlayın. 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' kullanımdan kaldırılmıştır 'belirterek değer ve ayrıştırma sunucusu kullanılamaz. – woodardj

0

Parse.User.enableUnsafeCurrentUser()

Bu belgesiz ama çalışıyor. ayrıştırma içinde sürdüren Parse.User.current gibi temel işlevleri yapmaya karar neden bilmiyorum() durmasına ve daha sonra bazı belgesiz Geçici çözüm için sonsuza etrafında aramak zorunda.

İlgili konular