Узел, Экспресс, Паспорт: данные не добавляются в объект пользователя в промежуточном программном обеспечении - PullRequest
0 голосов
/ 22 мая 2019

У меня есть приложение, использующее Express, Node и Passport.Мне нужно добавить данные в мой пользовательский объект в промежуточном программном обеспечении.

В этом ответе предлагается использовать следующее решение:

app.use(function(req, res, next) {
    if(req.user) req.user.whatever = 'you like';
    next();
});

Однако для меня данныене сохраняется в объекте пользователя.

Мое промежуточное ПО:

app.use((req, res, next) => {
  if (req.user) {
    let location = req.body.location;
    console.log("location : ", location); // "USA"
    req.user.location = location;
    console.log("req.user : ", req.user); // does NOT include "location" in user object
    next();
  }

  else {
    next();
  }
});

Вызов console.log по следующему пути также показывает, что клавиша location не сохраняется.

Вот полный код моего server.js файла.Может кто-нибудь помочь мне понять, почему данные не сохраняются?

const express = require('express');
const app = express();
const bodyparser = require("body-parser");
const passport = require("passport");
const session = require("express-session");

// http://expressjs.com/en/starter/static-files.html
app.use(express.static('public'));

// app.use(express.urlencoded({ extended: true }));
// app.use(express.json());

// bodyparser middleware
app.use(bodyparser.urlencoded({ extended: false }));
app.use(bodyparser.json());

// import passport-config file
require("./passport-config")(passport);

// express-session middleware
app.use(session({
  secret: process.env.SECRET,
  resave: false,
  saveUninitialized: false
}));

// passport middleware
app.use(passport.initialize());
app.use(passport.session());

app.use((req, res, next) => {
  if (req.user) {
    let location = req.body.location;
    console.log("location : ", location); // "USA"
    req.user.location = location;
    console.log("req.user : ", req.user); // does NOT include "location" in user object
    next();
  }

  else {
    next();
  }
});

const routes = require('./routes.js');
routes(app);

// listen for requests :)
const listener = app.listen(process.env.PORT, () => {
  console.log('Your app is listening on port ' + listener.address().port);
});
...