чванство не сохраняющих сеансов - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь настроить простую конечную точку входа в систему в swagger:

//login.js

'use strict';

function login(req, res){
  const userId = req.swagger.params.user_id.value;
  const user = { 
    _id: userId
  }
  if(req.session.userId){
    return res.json([req.session.userId, 'hello']);
  }

  global.app.db.collection('users').insertOne(user, function(err, b){
    req.session.userId = userId;
    return res.json([req.session]);
  });
}

module.exports = {
  login: login
};

Кажется, что оператор if никогда не верен, а userId никогда не устанавливается постоянно (он отображается только во втором возвратеоператор после оператора вставки).

Не уверен, что здесь не так.Мой app.js имеет типичную настройку экспресс-сессии.

//app.js
'use strict';
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const mongoDbUrl = 'mongodb://localhost:27017';
const dbName = 'my_db';


var SwaggerExpress = require('swagger-express-mw');
var app = require('express')();
var session = require('express-session')
const MongoStore = require('connect-mongo')(session);

app.set('trust proxy', 1) // trust first proxy
app.use(session({
  secret: 'some secret',
  store: new MongoStore({url:mongoDbUrl}),
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))

module.exports = app; // for testing
global.app = app;

var config = {
  appRoot: __dirname // required config
};

SwaggerExpress.create(config, function(err, swaggerExpress) {
  if (err) { throw err; }

  // install middleware
  swaggerExpress.register(app);

  var port = process.env.PORT || 10010;
  app.listen(port);

  if (swaggerExpress.runner.swagger.paths['/hello']) {
    console.log('try this:\ncurl http://127.0.0.1:' + port + '/hello?name=Scott');
  }
});

MongoClient.connect(mongoDbUrl, function(err, client) {
  assert.equal(null, err);
  console.log("Connected successfully to server");

  const db = client.db(dbName);
  app.db = db;
});

1 Ответ

0 голосов
/ 04 октября 2018

Похоже, проблема была в следующей строке:

cookie: { secure: true }

secure должен был иметь значение false, потому что я не использовал https на моей локальной машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...