У меня возникли проблемы с установкой сеанса с node.js с использованием express4.2.0. Я покажу вам свой код и после того, как прокомментирую:
APP.js
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var cookieSession = require('cookie-session');
var mainModel = require('./model/main_model');
var users = require('./routes/users');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieSession({
keys: ['secret1', 'secret2']
}));
app.use('/users', users);
/*Evething that express makes automatically*/
app.listen(8080);
ПОЛЬЗОВАТЕЛИ.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res)
{
if(req.cookie && req.cookie.user) res.send("COOKIE");
else if(req.session && req.session.user) res.send("SESSION");
else res.render('users/new_user', {title:"NEW USER"});
});
/*there is more content... but not relevant. */
function makeTheUserSession(result, res)
{
result['go'] = '/users';
//res.session.user = result.result[0];
//res.cookie('user', result.result[0]);
res.send(result);
}
Функция makeTheUserSession вызывается из поста метода '/users' (для поиска пользователей в базе данных).
Если я раскомментирую строку res.session.user, когда я вызову makeTheUserSession, приложение сломается, остановится, капито, мертво (невозможно установить свойство «пользователь» неопределенного)... Если я раскомментирую res.cookie («пользователь», результат ... строка, когда я вызываю функцию, и после того, как я вижу файлы cookie браузера в настройках, я нашел файл cookie, называемый пользователем, со значениями результата. результат [0]... но после метода get он не работает так, как я ожидаю... res никогда не отправляет мне "COOKIE".
Я видел один и тот же вопрос много раз, но я не нашел ответа, который стоил бы для меня: некоторые говорят о промежуточном программном обеспечении подключения (я использую экспресс), другие говорят об использовании «app.use (express.session (ключевое слово) )) но это работает только со старой версией экспресса, модуль экспресс-сессии устарел, и я бы хотел использовать более актуальное промежуточное ПО.
Надеюсь на ваши ответы. Большое спасибо.