Parse / Node.js,用户会话pipe理(javascript sdk)。 Parse.User.current()将不会持续

我正在尝试使用服务器端使用parse javascript SDK模块的自我托pipe的node.js服务器中的parseExpressCookieSession模块。 我按照这里find的说明设置服务器,以自动持久化Parse.User.current()对象中的用户会话。

但是,在成功login后,向Node.js服务器发出新请求时,Parse.User.current()对象始终为空。 附件是我的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 } })); 

我结束了使用Parse的Parse.User.become()方法,而不是尝试使用Parse Express Cookie中间件。 你必须使用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)); 

在您的login和注册function中,在您的Cookie中设置用户的会话令牌:

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

最后,在响应任何可能需要用户login的请求之前,请检查cookie中是否存在sessionToken,然后使用该会话令牌设置用户:

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

Parse.User.enableUnsafeCurrentUser()

这是无证的,但工程。 我不知道为什么parsing维护者决定像Parse.User.current()停止工作,然后你必须永远search一些无证的解决方法。