2016-09-03 7 views
1

Ich benutze diesen Code:Wie kann ich etwas wie php session_id() in Node.js verwenden?

/* 
* dependencies 
* */ 
var datetime = require('node-datetime'), 
    express = require('express'), 
    http = require('http'), 
    upload = require('jfum'); 

// configuration 
var dirs = require('./config').directors; 

// varibles 
var client = 'http://localhost'; 

// express setup 
var app = express(); 

// Add headers 
app.use(function(req, res, next) { 
    res.setHeader('Access-Control-Allow-Origin', client); 
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 
    res.setHeader('Access-Control-Allow-Headers', 'X-CSRF-Token,X-Requested-With,content-type'); 
    res.setHeader('Access-Control-Allow-Credentials', true); 

    next(); 
}); 

app.use('/upload', function(req, res, next) { 
    var date = datetime.create(), 
     patch = date.format('/Y/m/d/') + req.sessionID; 

    upload.fileHandler({ 
     tmpDir: dirs.temp, 
     uploadDir: __dirname + dirs.location + patch, 
     uploadUrl: dirs.location_url + patch, 
     maxPostSize: 11000000000, // 11 GB 
     minFileSize: 1, 
     maxFileSize: 10000000000, // 10 GB 
     acceptFileTypes: /\.(gif|jpe?g|png)$/i, 
     accessControl: { 
      allowOrigin: client, 
      allowMethods: 'OPTIONS, HEAD, GET, POST, PUT, DELETE' 
     } 
    })(req, res, next); 
}); 

// bind event 
upload.on('end', function(fileInfo) { 
    // insert file info 
    console.log("files upload complete"); 
    console.log(fileInfo); 

    // var exec = require('child_process').exec; 
    // var command; 
    // 
    // command = exec('ipconfig4', function(error, stdout, stderr) { 
    //  console.log('stdout: ' + stdout); 
    //  console.log('stderr: ' + stderr); 
    //  if (error !== null) { 
    //   console.log('exec error: ' + error); 
    //  } 
    // }); 
}); 

upload.on('delete', function(fileName) { 
    // remove file info 
    console.log("files remove complete"); 
    console.log(fileName); 
}); 

upload.on('error', function(e) { 
    console.log(e.message); 
}); 



// Configuration 
app.configure(function() { 
    app.set('port', process.env.PORT || 3001); 

    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.cookieParser('token')); 
    app.use(express.session({ 
     secret: 'secret' 
    })); 
    app.use(express.favicon()); 
    app.use(express.static(__dirname + '/public')); 
}); 

app.configure('development', function() { 
    app.use(express.errorHandler({ 
     dumpExceptions: true, 
     showStack: true 
    })); 
    app.set('view cache', false); 
}); 

app.configure('production', function() { 
    app.use(express.errorHandler()); 
    app.set('view cache', true); 
}); 

/* 
* routes 
* */ 
app.get('/', function(req, res) { 
    res.send(req.sessionID); 
}); 

/* 
* start server 
* */ 
http.createServer(app).listen(app.get('port'), function() { 
    console.log("Express server listening on port " + app.get('port')); 
    console.log("access url /location/input"); 
}); 

In Routen es scheint, dass ich so etwas wie PHP session_id() mit req.sessionID bekommen kann. Aber in

app.use('/upload', function(req, res, next) { 
    var date = datetime.create(), 
     patch = date.format('/Y/m/d/') + req.sessionID; 
}); 

ich undefined von req.sessionID. Warum? Funktioniert das wie phps session_id()?

Antwort

0

Knoten-Webserver-Entwicklung funktioniert in Middlewares. Was Sie tun müssen, ist die passende Session-Middleware zu finden und sie in Ihren Middleware-Stack einzugeben, bevor Sie req.sessionID() aufrufen.

Verwandte Themen