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
不需要它。
有人可以向我解释中间件在哪里需要秘密字符串吗? 此外,如果我在 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
不需要它。