Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Parse / Node.js,用户会话管理(javascript sdk). Parse.User.current()不会持久化大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在我自己托管的node.js服务器中使用parseExpressCookieSession模块,该服务器使用服务器端的解析 javascript SDK模块.我按照此处的说明设置服务器以自动保留Parse.User.current()对象中的用户会话.

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

登录注册功能中,在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);
      }
    });

最后,在响应可能需用户登录的任何请求之前,检查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 / Node.js,用户会话管理(javascript sdk). Parse.User.current()不会持久化全部内容,希望文章能够帮你解决Parse / Node.js,用户会话管理(javascript sdk). Parse.User.current()不会持久化所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。