【问题标题】:Express: is it possible to bypass sessions for static files?Express:是否可以绕过静态文件的会话?
【发布时间】:2012-11-27 06:53:21
【问题描述】:

我正在使用 Express + Mongoose + Passport + Connect-mongo 的非常简单的设置,一切正常。唯一让我感到困惑的是,我甚至可以看到为静态文件调用的 passport.unserializeUser,从我的应用程序的角度来看,这绝对没有意义。

我可以理解在某些情况下您也希望在某种授权下提供静态文件,但我想知道如何“跳过”整个会话中间件以防我提供静态文件。

(在生产环境中,我无法将 cookie 用于资产)

【问题讨论】:

  • 只需将express.static 放在所有其他中间件之上
  • 它有效,我发现它很棒。乔纳森,你介意“回答”这个问题,这样我就可以给你一些业力了吗? :)
  • 我不是为了积分!
  • 是的,但是这个地方是供人们寻找答案的。你介意我用你的提示回答自己吗?
  • 不。完整的解释和/或示例会更好地作为答案

标签: javascript node.js express passport.js


【解决方案1】:

中间件按照添加的顺序被调用。只需将静态中间件移动到您的 app.js 的早期即可。

例如:

app.use(express.static(__dirname + "/public"));
// any other middleware
app.use(passport()); // or whatever your passport config looks like

【讨论】:

    【解决方案2】:

    您可以从根本不存储任何 cookie 的另一个域提供静态文件。这也意味着您不能在提供这些文件之前进行任何(安全)检查。

    这种技术被各种网站使用,例如 StackOverflow、Facebook 和 LinkedIn。

    【讨论】:

    • 是的,当然,我知道(正如我最后一句话所说)。但我想知道我是否可以通过编程方式做到这一点:)
    • 我对 Node.js + Express + Passport 还不够熟悉,但是您也许可以设置您的 Web 服务器以返回请求的文件(如果存在)并在请求时重定向到您的应用程序不是现有文件或文件夹。
    猜你喜欢
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多