会话变量不适用于各路线

时间:2018-05-19 04:41:40

标签: node.js express express-session

我很长时间都面临这个问题,最后我决定在这里发布。 我将会话变量存储在一个路由中,当我尝试从其他路由访问它时,它没有被定义。

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。 邀请任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您在用户登录后使用护照,则可以将所有路线与*匹配,并将会话与req.locals存储

app.get('*', function(req, res, next){
  res.locals.user = req.user || null;
  next();
});

在启动服务器之前添加此行