2012-02-26 14 views
7

Expressでは、Node.jsのExpressでは、特定のパス(たとえば、/restricted)で要求を検査し、受け入れ可能な場合は静的キャッシングヘッダーなどを処理するプロバイダー。Express.js内の静的ファイルへのリダイレクト

単にapp.get('/restricted/:file', ...)を使用し、res.sendfileを使用して承認された場合は静的ファイルを送信すると、キャッシュヘッダーは無視され、常にファイルが送信されます。

異なるユーザーには異なるファイルしか入手できないため、ブランケットのログインチェックは使用できません。

これを実装する最良の方法は何ですか?

答えて

14
var express = require("express"); 
var app = express.createServer(); 

var staticMiddleware = express.static(__dirname + "/public"); 

app.get("/restricted/:file", function(req, res, next) { 
    var authorized = true; 
    //Compute authorization appropriately here 
    if (authorized) { 
    staticMiddleware(req, res, next); 
    } else { 
    res.send(401); 
    } 
}); 
app.listen(3456); 

これは、すべての機能を含む適切な場合は、静的ミドルウェアを使用します。そうしないと、適切でないリクエストを処理できます。

+0

まさに私が必要なもの、感謝! – w00t

+0

通常(保護されていない)私は 'app.use(express.static( 'public'));'を介してページを提供しています。あなたのアプローチを使用すると、HTMLはロードされますが、すべてのスタイルとスクリプトはなくなります(404)。 – Sebastian

関連する問題