Getting "TypeError: Secret string must be provided." in NodeJS application with Passport.js and Express-Session as middleware

Getting "TypeError: Secret string must be provided." in NodeJS application with Passport.js and Express-Session as middleware

有人可以向我解释中间件在哪里需要秘密字符串吗? 此外,如果我在 passport.session 选项中设置一个秘密 key/value 对,我仍然会收到相同的错误消息

这是代码

    // 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
    }));        

这不适合我:

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 不需要它。