2017-09-14 29 views
1

有人可以向我解释中间件需要秘密字符串的位置吗? 另外,如果我在passport.session选项设置一个密钥/值对我仍然得到同样的错误信息获取“TypeError:必须提供秘密字符串”。在NodeJS应用程序中使用Passport.js和Express-Session作为中间件

这是代码

// using pug since a view engine is required by express 
    app.set('views', __dirname) 
    app.set('view engine', 'pug') 

    app.use(cookieParser(secretConfig)) 
    // parse application/json 
    app.use(bodyParser.json()) 

    // parse application/x-www-form-urlencoded 
    app.use(bodyParser.urlencoded({ extended: false })) 


    app.use(passport.initialize()); 
    app.use(passport.session({ 
     resave: false, 
     saveUninitialized: true, 
     failureFlash: true 
    })); 

    //app.use(flash()); 

    // Load the REST endpoints 
    app.use('/api', require('./endpoints/whatever/router')) 
    app.use('/api', require('./endpoints/login/router')) 

    // app.use('/api', require('./users/router')) 
    // Repeat the above line for additional model areas ("deals", "vehicles",   etc) 


    app.use('/graphql', graphqlHTTP({ 
     schema: schema, 
     rootValue: root, 
     graphiql: true 
    }));   

回答

3

这个不喜欢我的权利:

app.use(passport.session({ 
    resave: false, 
    saveUninitialized: true, 
    failureFlash: true 
})); 

我相信你需要这样的事:

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

app.use(session({ 
    resave: false, 
    saveUninitialized: true, 
    secret: 'secret here' 
}); 

app.use(passport.initialize()); 
app.use(passport.session()); 

夏娃尽管您在标题中提到了“Express-Session”,但您发布的代码示例实际上并未使用它。这是不一样的passport.session

除非您将其用于别的东西,否则您还可以删除cookie-parser,因为express-session的最新版本不需要它。

相关问题