我很长时间都面临这个问题,最后我决定在这里发布。 我将会话变量存储在一个路由中,当我尝试从其他路由访问它时,它没有被定义。
server.js文件
document.getElementById('mentees').innerHTML+='<br >' + document.getElementById('name').value+'<br><br>'+document.getElementById('rating').value+'<br><br>'+document.getElementById('comments').value;
api.js
var express=require('express');
app=express();
var port=process.env.PORT || 8080;
var mongoose=require('mongoose');
var router=express.Router();
var appRoutes=require('./routes/api')(router);
var session=require('express-session');
var MongoStore=require('connect-mongo')(session);
app.use(bodyParser.urlencoded({extended:true}));
app.use(session({
secret:'hardik',
saveUninitialized: true,
resave: true,
store: new MongoStore({mongooseConnection:mongoose.connection})
}));
app.listen(port,function(){
console.log('running on port '+port);
});
然后它将显示令牌,如果我在该行下面但是在任何其他路由中,如果我尝试记录它,它会给出undefined。 邀请任何帮助。
答案 0 :(得分:0)
如果您在用户登录后使用护照,则可以将所有路线与*匹配,并将会话与req.locals存储
app.get('*', function(req, res, next){
res.locals.user = req.user || null;
next();
});
在启动服务器之前添加此行