Печать объекта сеанса в ExpressJS - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь распечатать объект сеанса в промежуточном программном обеспечении платформы ExpressJS. Я новичок в сеансе с экспрессом и хочу посмотреть, сохраняет ли объект Redis, который я настроил в файле app.js

[index.js (router)]
    router.use('/', function(req, res, next) {
        req.session.user = {};
        req.session.user.browserInformation = req.headers['user-agent'];
        console.log(req.session);
        next();
    });
    router.get('/', function(req, res, next) {
        res.render('index.html');
    });



[The app.js File:]
   'use strict';
    const createError = require('http-errors');
    const express = require('express');
    const path = require('path');
    const cookieParser = require('cookie-parser');
    const logger = require('morgan');
    const bodyParser = require('body-parser');
    const session = require('express-session');
    const redis = require('redis');
    const redisStore = require('connect-redis')(session);
    const client = redis.createClient();

    const app = express();

    const _Utils = require('./application/_Utils');

    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');

    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({
        extended: false
    }));
    app.use(cookieParser());
    app.use(bodyParser.urlencoded({
        extended: false
    }))
    app.use(bodyParser.json())
    app.use(express.static(path.join(__dirname, 'views')));

    //require('./config/router')(app);
    let indexRouter = require('./routes/index');

    app.engine('html', require('ejs').renderFile)

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
        next(createError(404));
    });

    // error handler
    app.use(function(err, req, res, next) {
        // set locals, only providing error in development
        res.locals.message = err.message;
        res.locals.error = req.app.get('env') === 'development' ? err : {};

        // render the error page
        res.status(err.status || 500);
        res.render('error');
    });

    app.use(session({
        secret: _Utils.getHashedValue(),
        store: new redisStore({
            host: '127.0.0.1',
            port: 6379,
            client: client,
            ttl: 3600000
        }),
        saveUninitialized: false,
        resave: false,
        cookie: {
            expires: new Date(Date.now() + 3600000),
            maxAge: 3600000
        },
    }));
    module.exports = app;

У меня проблема в том, что ничего не печатается или Redis пуст, когда я выполняю команду KEYES * в клиентском интерфейсе терминала

РЕДАКТИРОВАТЬ: Добавлен целый файл app.js

1 Ответ

0 голосов
/ 28 апреля 2018

в моем случае код работает:

console.log(req.session);

Также используйте это при посещении некоторой информации, чтобы использовать сеанс:

 req.session.mail="a@b.com";

Если вы находитесь на локальном хосте, добавьте этот небезопасный файл cookie в наш код. Например:

app.use(session({ secret: 'GttiginYagmurlagelkuskunumyagmuralara' ,resave: true,
    saveUninitialized: true,
    cookie: { secure: false,maxAge:  3600000}}));
...