MongoStore를 사용중인데 세션을 다시 불러오려면 어떻게 해야 하나요?


DB도 몽고DB, 세션도 MongoStore를 쓰고 있습니다. 일단 사용자 정보가 몽고DB에 저장되고, 로그인시 passport를 통해서 세션화합니다.
사용자 정보를 갱신하려고 몽고DB를 업데이트 하는데까지는 문제가 없는데 세션은 새로 로그인을 하지 않으면 변경이 안됩니다.

app.use(session({
    cookie: {
        maxAge:30 * 60 * 1000,
        expires: 30* 60 * 1000,
        httpOnly: true
    },
    rolling: true,
    resave: true,
    saveUninitialized: true,
    secret: '~~~',
    store: new MongoStore({
        mongooseConnection: mongoose.connection
    })
}));

app.use(function(req, res, next){
    res.locals.userSession = req.user;
    next();
});

var passport = require('./config/passport');
app.use(passport.initialize());
app.use(passport.session());

세션 설정은 이렇고요 라우터에서는 이렇게 하고 있습니다.

var v1 = req.body.v1,
    v2 = req.body.v2;

User.findOne({'_id': req.user._id}, function(err, user){
    if(err){
        res.json({errMsg:err});
    }else{
        user.v1 = v1,
        user.v2 = v2;
        user.save();
        req.session.save();
        res.json({success: 1});
    }
});

req.session.save(), req.session.reload(), req.session.regenerate() 등등 다 해봤는데 save는 아무 반응도 없고 reload나 regenerate는 async 모듈에서 오류를 일으킵니다.

~/node_modules/connect-mongo/node_modules/bluebird/js/release/async.js:48
        fn = function () { throw arg; };
                           ^
  • 2016년 07월 08일에 작성됨

조회수 132


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close