首页 > 解决方案 > 防止 express-session 从特定路由发送 cookie

问题描述

下面是我正在测试快速会话的节点服务器:

//all imports here

app.use(session({
    secret: 'secret',
    name: 'session',
    saveUninitialized: true,
    secure: false,
    resave: false,
    cookie:{
        httpOnly: true,
        maxAge: 10*60*1000
    }
}))

app.get('/',(req,res)=>{
    console.log(req.session);
    res.sendFile(__dirname+"/index.html");
})

app.get('/login',(req,res)=>{
   req.session.loggedIn=true;
   req.session.user="Gratis";
   res.send("successful");
}


app.get('/homepage',(req,res)=>{
if(!req.session.loggedIn) res.redirect('/');
    else{console.log(req.session);
    res.send(" Hello ");}
})

app.listen(3000);

我们的服务器工作正常,从某种意义上说,在点击“/”路由时,exptress 会发送一个活动 10 分钟的 cookie“会话”。意味着服务器将能够在用户点击“/”路由后立即跟踪用户 10 分钟。现在我的问题从这里开始:假设用户在点击“/”路线 7 分钟后登录。然后req.session.username会在会议上只呆 3 分钟,因为 7 分钟已经过去了。所以我的问题是,有什么方法可以防止 express 只有在用户点击“/login”路由时才发送“会话”cookie,以便用户被记住 10 分钟。

我可以考虑只使用发送自定义cookie,res.cookie但这会破坏快速会话的目的,因为我们不必手动处理cookie。

谢谢你!!

标签: node.jsexpresssessionexpress-session

解决方案


推荐阅读