I use Redis as a session repository, and I would also like to create my own session identifier using express-session . So far, I have succeeded in creating a session with a constant line:
redis configuration
var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var compression = require('compression'); var session = require('express-session'); var redis = require('redis'); var RedisStore = require('connect-redis')(session); var routes = require('./routes/index'); var api = require('./routes/api'); var app = express(); var client = redis.createClient(); // compress all requests app.use(compression()) // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(session({ secret: 'SECRET', resave: false, saveUninitialized: false, store: new RedisStore({ host: 'localhost', port: 6379, client: client}), cookie: { maxAge: 60000 }, genid: function(req) { return "myApiKey"; } })); app.use('/', routes); app.use('/request_api', api); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); });
which creates the keys in redis as shown below:
127.0.0.1:6379> keys * 1) "sess:myApiKey"
However, I was not able to create a unique identifier with uuid , as indicated in the doc here session-store github . I tried to insert the session value into the route pointers file ( routes/index.js ), like this
router.get('/', function(req, res, next) { req.session.user = "12345"; res.render('index', { title: 'MyApp' }); });
But it was not possible to read the value inside the genid function due to the undefined value. So my question is:
Is it possible to generate a session identifier with uuid any model, for example user->uuid ? If so, how can I do this?
Thanks, any help would be appreciated.