nodejs 表达创建多个会话的静态路由

问题描述 投票:0回答:2

我正在使用 Nodejs 和 Express。我有一个routes.js 文件定义了我的所有路线。当我尝试使用 req.session.regenerate() 时,express 会创建多个会话,其中每个会话也用于静态文件请求。

令人困惑的是 req.session.regenerate() 在 app.get('/' 路由中,从 console.log 看来它只被调用一次。但不知何故,当我查看 mongodb 会话集合时,有多个会话为一页请求创建。

基本上我想做的是,当请求登录页面时,我想创建一个新会话,以便express不会重复使用以前会话的cookie。

有什么指点吗?

routes.js

exports = module.exports = function(app, passport) {

//When I uncomment this line, it shows me the number of times a request is made.
//app.all('*', function(req, res, next){console.log('Request made to server'); next();});

app.get('/', function(req, res){

    if (req.isAuthenticated()){
        res.redirect('./home');
    }else{

       req.session.regenerate(function(err) {
            console.log('Regenerated');
       })

        res.render('./login')
    }
});
node.js session express
2个回答
7
投票

将快速会话中间件放在

express.static()
中间件之后。


0
投票

对于那些仍然遭受这种痛苦的人:

  • 我的问题是这行:

<link rel="manifest" href="/img/favicon/site.webmanifest">

正在加载到 .ejs 文件中

删除此行解决了问题

© www.soinside.com 2019 - 2024. All rights reserved.