Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何获取currentUser的sessionToken?_Node.js_Express_Parse Platform_Back4app - Fatal编程技术网

Node.js 如何获取currentUser的sessionToken?

Node.js 如何获取currentUser的sessionToken?,node.js,express,parse-platform,back4app,Node.js,Express,Parse Platform,Back4app,我在heroku上运行一个web应用程序。作为数据库,我尝试使用back4app。在的帮助下,我实现了登录。两天以来,我一直在努力让会议顺利进行 因此,我读了很多博客、文章,当然还有。但是我不能让它工作。我希望,你会发现我的问题。以下代码是我的最新尝试: const express = require('express'); const server = express(); const path = require('path'); const bodyParser = require('bo

我在heroku上运行一个web应用程序。作为数据库,我尝试使用back4app。在的帮助下,我实现了登录。两天以来,我一直在努力让会议顺利进行

因此,我读了很多博客、文章,当然还有。但是我不能让它工作。我希望,你会发现我的问题。以下代码是我的最新尝试:

const express = require('express');
const server = express();
const path = require('path');
const bodyParser = require('body-parser');

const port = process.env.PORT || 8080;

const back4app = require('parse/node');

back4app.initialize("xxx","yyy"); 
back4app.serverURL = 'https://parseapi.back4app.com/';


server.use(express.static('web'));
server.use(bodyParser.json());

server.get('/lgn', (req, resp) => {
console.log("server.get('/lgn',...");
    resp.sendFile(path.join(__dirname + '/web/login.html'));
});

server.post('/lgn', (req, resp) => {
    const data =  req.body;

    console.log("server.post('/lgn',...");

    if(data.email != undefined){
        console.log(data.email);
        resetPassword(data);
    } else{
        logIn(data, function(err, user){
            console.log(user.get("sessionToken")); 


            //How to get the user object in other routes?
            console.log('session');
            back4app.User.enableUnsafeCurrentUser(); //is this a secure solution?

            back4app.User.currentAsync().then(function(userObj) {
                console.dir(userObj.get("sessionToken"));
            });

            if(user){
                resp.send( JSON.stringify( {url: '/'}) );
            } else{
                console.log(err);
            }
        });
    }
});


function logIn(data, cb) {
    // Create a new instance of the user class
    var user = back4app.User
        .logIn(data.username, data.password)
            .then(function(user) {
                console.log('User successful logged in with name: ' +     user.get("username"));
                cb(null, user);
            })
            .catch(function(error){
                console.log("Error: " + error.code + " " + error.message);
                cb(error);
    });
}


server.listen(port, (err) => {
    if (err) {
        return console.log('something bad happened', err)
    }
    console.log(`server is listening on ${port}`)
});
userObj为空。但是为什么呢?我必须做的是,在其他路径中获取当前用户及其会话


(我也尝试过使用back4app.Session,但没有得到我想要的。)

在Node.js应用程序中使用
currentUser
方法是不安全的

而不是:

logIn(data, function(err, user){
            console.log(user.get("sessionToken")); 


            //How to get the user object in other routes?
            console.log('session');
            back4app.User.enableUnsafeCurrentUser(); //is this a secure solution?

            back4app.User.currentAsync().then(function(userObj) {
                console.dir(userObj.get("sessionToken"));
            });

            if(user){
                resp.send( JSON.stringify( {url: '/'}) );
            } else{
                console.log(err);
            }
        });
使用:


除了答案之外,我还想让您知道,您可以直接从前端代码使用Back4App API。我是说。。。在大多数情况下,你甚至不需要在Heroku上运行Node.js应用程序。谢谢@davidacêdo,我的英雄。back4app.User.me(sessionToken)。然后(…).chache(…)工作。。。最后一个问题。在哪个文档中我可以找到这个?在上,我找不到这个。它实际上是最近添加到SDK中的,还没有关于它的文档。我将确保它将被添加到文档中。
logIn(data, function(err, user){
            // This is your session token. You will have to send it back to your client. The client should store it and send it to the server in the other routes.
            const sessionToken = user.get("sessionToken");
            console.log(sessionToken); 


            //How to get the user object in other routes?
            //In order to get the user in other routes you will have to use the sessionToken like this:
            back4app.User.me({ sessionToken }).then(function(userObj) {
                console.dir(userObj.get("sessionToken"));
            });

            if(user){
                resp.send( JSON.stringify( {url: '/'}) );
            } else{
                console.log(err);
            }
        });