2015-06-08 11 views
5

Tôi đang cố gắng sử dụng mô-đun parseExpressCookieSession trong máy chủ node.js tự lưu trữ sử dụng mô-đun SDK phân tích cú pháp javascript ở phía máy chủ. Tôi đang làm theo các hướng dẫn được tìm thấy ở đây để thiết lập máy chủ để tự động duy trì các phiên người dùng trong đối tượng Parse.User.current().Phân tích cú pháp/Node.js, quản lý phiên người dùng (javascript sdk). Parse.User.current() sẽ không tồn tại

Tuy nhiên, đối tượng Parse.User.current() luôn rỗng khi thực hiện yêu cầu mới cho máy chủ node.js sau khi đăng nhập thành công. Đính kèm là mã thiết lập cho tệp server.js của tôi.

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

Hi @ptsimpso! Bạn đã bao giờ tìm thấy bất kỳ giải pháp cho điều này? Tôi đang làm việc trên một thiết lập tương tự và đang chạy vào các vấn đề tương tự bạn có. Cảm ơn nhiều! – user3753098

+0

Bạn có tìm thấy giải pháp cho vấn đề này không? Tôi dường như không thể tự mình làm được điều này. @ptsimpso – user3753098

+0

GLOBAL.Parse = require ('parse'). Bạn có sợ sử dụng GLOBAL cho Phân tích cú pháp không? – Amir

Trả lời

4

tôi đã kết thúc sử dụng phương pháp thay vì cố gắng sử dụng các middleware Parse nhanh Cookie Parse.User.become Parse của(). Bạn phải sử dụng các gói CookieParser và CookieSession và bao gồm họ:

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

Đặt chúng lên:

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

app.use(cookieParser(COOKIE_SECRET)); 

Trong đăng nhập của bạn và đăng ký chức năng, thiết lập thẻ session của người dùng trong cookie của bạ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); 
     } 
    }); 

Và cuối cùng, trước khi trả lời mọi yêu cầu có thể cần người dùng đăng nhập, hãy kiểm tra xem sessionToken có tồn tại trong cookie không và sau đó đặt người dùng sử dụng phiê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

Đáng chú ý rằng 'Parse.User.become' không được chấp nhận và không có sẵn trong phân tích cú pháp-máy chủ. – woodardj

0

Parse.User.enableUnsafeCurrentUser()

này được cung cấp tài liệu, nhưng hoạt động. Tôi không biết tại sao những người duy trì phân tích cú pháp quyết định thực hiện các chức năng thiết yếu như Parse.User.current() ngừng hoạt động và sau đó bạn phải tìm kiếm mãi mãi cho một số cách giải quyết không có giấy tờ.

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