2017-05-25 4 views
1

Ich bin neu in NodeJS und ich versuche, mit Sitzung zu arbeiten. Aber ich stecke mit diesem Fehler fest. Jede Art von Hilfe wird geschätzt.ReferenceError: Anfrage ist nicht definiert in NodeJS Sitzung

-Code: -

var express = require('express'); 
var jsonFile = require('jsonfile'); 
var NodeSession = require('node-session'); 
var router = express.Router(); 

session = new NodeSession({secret: 'Q3UBzdH9GEfiRCTKbi5MTPyChpzXLsTD', 'lifetime': 60 * 1000, 'secure': true, 'encrypt': true}); 

session.startSession(request, response, function() { 
    // server handler goes here 
    // req.session available 
}); 

function restrict(req, res, next) { 
    if (req.session.has('sessnm')) { 
     next(); 
    } else { 
     res.redirect('/'); 
} 

Es zeigt mir, den Fehler in dieser Zeile: -

session.startSession(request, response, function() { 
+1

Ich denke, Ihre 'startSession'-Funktion sollte in einigen Routen-Handler gehen, so dass es nur ausgelöst wird, wenn es eine Anfrage gibt, nicht beim App-Start. –

+0

@MohitBhardwaj - So? router.get ('/', Funktion (req, res, next) { session.startSession (Funktion (Anfrage, Antwort) { }); res.render ('index', {title: 'Login Page' }); }); –

Antwort

2

Von dem, was ich sammeln kann, startSession sollte in einem Kontext verwendet werden, wenn ein Antrag und Antwort ist verfügbar, z als Middleware:

app.use(function (req, res, next) { 
    session.startSession(req, res, function() { 
     // ...   
     next(); 
    }); 
}) 

wo app ist Ihre Serverinstanz z. app = express()

+0

nein, mein böser - das war die richtige api in der Tat, aber es sollte immer verwendet werden, wenn eine Anfrage/Antwort verfügbar war - bearbeitete Antwort –

+0

Ich habe das schon versucht, aber es wird mir nicht helfen .... –

+1

Ich denke stattdessen Wenn Sie es in jeder einzelnen Route hinzufügen, können Sie es als allgemeine Middleware am Anfang Ihrer Datei hinzufügen, die alle oder viele Routen enthält. Sie können 'app.use' dafür verwenden. –

Verwandte Themen