2017-03-05 7 views
1

Ich versuche, Authentifizierung zu meiner node.js/express.js/react.js Anwendung hinzuzufügen.Ich verstehe nicht Fehler

Meine Verzeichnisstruktur ist wie folgt:

application 
    server.js 
    www 
    js 
     app.js 
     sessions.js 

Ich füge diese beiden Zeilen zu server.js

var express = require('express'), 
    app = express(), 
    path = require('path'), 
    http = require('http').Server(app), 
    io = req 

let sessions = require('./www/js/sessions'); 
app.use(sessions); 

Ich laufe node server.js ich eine neue Meldung habe ich vorher noch nicht gesehen:

$ node server.js 
express-session deprecated req.secret; provide secret option www/js/sessions.js:16:22 

und dann im Browser, wenn ich mich verbinde ich bekomme diesen Fehler. Wenn ich die beiden Zeilen entfernen oben aus server.js das Programm läuft gut:

im Browser I Ausnahme siehe:

TypeError: passport.initialize is not a function 
    at module.exports.passport (/home/idf/Documents/js/react-trader/www/js/sessions.js:18:56) 
    at Layer.handle [as handle_request] (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/layer.js:95:5) 
    at trim_prefix (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:312:13) 
    at /home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:280:7 
    at Function.process_params (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:330:12) 
    at next (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:271:10) 
    at expressInit (/home/idf/Documents/js/react-trader/node_modules/express/lib/middleware/init.js:33:5) 
    at Layer.handle [as handle_request] (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/layer.js:95:5) 
    at trim_prefix (/home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:312:13) 
    at /home/idf/Documents/js/react-trader/node_modules/express/lib/router/index.js:280:7 

ich nicht von dem Fehler sagen kann, ob es sich beschwert, dass es nicht Suche sessions.js, oder wenn es eine npm Anforderung nicht finden kann. Ich habe express-session installieren und ich sehe es in den package.json so nicht sicher ...

{ 
    "name": "TraderWS", 
    "version": "1.0.0", 
    "description": "Trader Workstation", 
    "main": "server.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "Me", 
    "license": "MIT", 
    "dependencies": { 
    "babel-loader": "^6.2.10", 
    "babel-preset-es2015": "^6.22.0", 
    "babel-preset-react": "^6.22.0", 
    "body-parser": "^1.16.1", 
    "connect-redis": "^3.2.0", 
    "express": "^4.12.3", 
    "express-session": "^1.15.1", 
    "griddle-react": "^0.7.1", 
    "react": "^15.4.2", 
    "rx": "^4.0.7", 
    "socket.io": "^1.3.5", 
    "webpack": "^2.2.1" 
    } 
} 
+0

Oh, ich glaube, ich vermisse die Weitergabe eines Passes zu Sitzungen. – Ivan

Antwort

0

Dies kann oder nicht jemand anderes helfen kann.

Anfangs war das Problem, dass ich keinen Pass zu den Sitzungen übergab. Dieses fest, dieses Problem:

let usersService = require('./service/users'); 
let bodyParser = require('./middleware/bodyParser'); 
let passport = require('./config/passport'); 
let sessions = require('./middleware/sessions')(passport); // was missing parameter passport 

Dann hatte ich ein anderes Problem, dass ich unten mit dem kommentierten aus Versionscode hatte, und das hat einen Fehler verursacht, weil es kein Geheimnis war. Sobald ich tatsächlich ein String-Geheimnis eingegeben wurde, ging das Problem

'use strict'; 

const session = require('express-session'); 

let config = { 
    //secret: process.env.SESSION_SECRET, 
    secret: 'keyboard cat', 
    saveUninitialized: false, 
    resave: false 
}; 

if (process.env.REDIS_URL) { 
    const RedisStore = require('connect-redis')(session); 
    config.store = new RedisStore({ url: process.env.REDIS_URL }); 
} 

let expressSession = session(config); 

module.exports = passport => [expressSession, passport.initialize(), passport.session()];