【问题标题】:nodejs express static routes creating multiple sessionsnodejs表达静态路由创建多个会话
【发布时间】:2014-06-04 01:45:52
【问题描述】:

我正在使用 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


    【解决方案1】:

    将您的快速会话中间件放在您的 express.static() 中间件之后。

    【讨论】:

    • 太棒了。它解决了我近 95% 的问题。有时我还有一些额外的课程。这些是我在快速会话中间件之后拥有的所有 app.use .. app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); app.use(app.router);
    • 尝试记录正在通过的请求的 url。也许它们是网站图标请求?
    • 是否有其他解决方案。我正在为网站和 api 使用多个 express() 应用程序,因此我必须从 api 中排除会话并在网站中提供它们。
    • 你能显示一些代码吗?我没有 static() 设置......也许有一个类似的,但我不知道没有例子。
    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2022-11-12
    • 1970-01-01
    • 2019-06-01
    • 2016-07-22
    相关资源
    最近更新 更多