【问题标题】:Passport.js express viewsPassport.js 表达意见
【发布时间】:2015-01-07 00:37:24
【问题描述】:

我正在使用护照和一些静态 .html 文件。我想将它们作为快速视图或静态文件包含在内。现在我希望每个人都可以使用像 login.html 这样的一些 .html 文件,但是像 secret.html 这样的其他视图文件应该需要通行证。 我知道,你可以使用 app.get('somePath', ensureAuthenticated, function (req, res, next) {} 用于路由,但我希望它用于静态文件

如何以一种非 hacky 的方式做到这一点?

【问题讨论】:

    标签: javascript node.js passport.js


    【解决方案1】:

    如果所有“安全”文件共享一个不同的 URL 前缀,例如 /public/secure,您可以使用此路径 use() ensureAuthenticated

    app.use('/public/secure', ensureAuthenticated);
    app.use('/public', express.static(__dirname + '/public'));
    

    否则,express.static() middleware 不会提供很多用于控制访问的选项。在大多数情况下,它假定给定路径中的所有可用文件都是“public”。

    不过,它通常会拒绝发送隐藏文件,遵循 . 前缀的 *nix 标准:

    ~/path/to/.secret.html
    

    然后,要实际服务它,您可以在附加中间件的建议路线中send the file自己:

    app.get('/path/to/secret.html', ensureAuthenticated, function (req, res) {
        res.sendfile(__dirname + '/path/to/.secret.html');
    });
    

    而且,您可能需要考虑将其移出您的 static() 目录,

    【讨论】:

    • 感谢您的回答,但您的第二个想法不起作用。 send,用于发送文件的 lib express 没有找到点文件。我认为这是有意的。
    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多