已经被session保存搞了好多天了,请求大神指点一下(已经重新截图了,求求你们了,实在没办法了)
发布于 9 年前 作者 tanzijie11 5396 次浏览 最后一次编辑是 8 年前 来自 问答

使用express4和mongodb时保存session不了,已经被折腾了几天了,网上找了几天了,有的是使用express3的,慕课网的教程就是express3 的,有的是使用redis存储的,nodejs论坛的源码就是,但我不想再安装一个数据库了,搞了几天了,还没解决啊,所以只能麻烦各位大神了

!!谢谢了!! app.js代码如下 00.png 0.1.png 0.2.png models代码如下 users.js 4.png 路由users.js代码 5.png

打印req.session.user都是显示undefined,而且数据库控制台也没显示有数据插入,到底要怎么设置才能把session保存啊?? 请求各位大神了!

15 回复

代码太长,还没缩进和高亮,根本没看。 不过我也不是大神,也看不出来。

其中一点,session的数据库连接可以复用的。当然这和你保存不了的问题可能没什么关系。

app.use(session({
    secret: 'secret',
    resave: false,
    cookie: {maxAge: 15552000000},
    saveUninitialized: true,
    store: new MongoStore({mongooseConnection: mongoose.connection})
}));

@jinceon 我也试过了,也不行,你有完整的DEMO吗?可以发给我一个看看吗?我重新截图了

你搞明白session到底是什么,你就会自己整了,

看看 汇智网上的 express课程 上面讲解的4.x版本的

@captainblue2013 能给点实际的吗?大大神?

@2596887568 汇智网上的我看过了,Session只保存在内存中,没有保存到mongodb中,我什么网都看过了,慕课网和汇智网,极客学院还没有nodejs的教程,我不是一个喜欢随便就问的人,是实在没办法了,实在找不到原因了,而且是自学的,所以才提问的。

你没有把用户信息存入Session吧,你 post 方法内部逻辑有问题

router.post('/login', function(req, res, next){
   //第一步:进行验证等一系列操作
   ..........
   ......
   //第二步:将用户信息保存到数据库
   .........
   .........
   //第三步:将用户信息存入session
   req.session.user = user;     
})

你的浏览器禁用cookie了吗?

先了解了解session机制,然后自己写个内存session,然后拓展成你熟练的数据库session,然后什么其他第三方包的session你就差不多都能解决了~ 可以先看看alsotang 的包教不包会中的session课程

session都没存,怎么能取的到呢?

大哥, session 是不需要手动操作数据库的. 直接 req.session.user = 就行了.

@jyootai 人家post里面不是设置了的吗 req.session.user = user.name;

我用过redis的, 感觉挺好

回到顶部