13

プライベートフォルダーにあるファイルへのアクセスを制限するために、expressとpassportjsでノードを使用しています。コードを次のように減らしました。public static フォルダー内のすべてが正常に機能しますが、staticMiddleware を使用してプライベート フォルダーをターゲットとするルートは 404 エラーを返します。

var express = require('express')
,   util = require('util');

var app = express.createServer();
var staticMiddleware = express.static(__dirname + '/private');

app.configure(function() {
  app.use(app.router);
  app.use(express.logger('dev')); 
  app.use('/public',express.static(__dirname + '/public'));
});

app.get('/private/:file', function(req, res, next){
    console.log('about to send restricted file '+ req.params.file);
    staticMiddleware(req, res, next);
});
app.listen(16000);

私は他の人のために働くと思われる次の参照を使用していたので、何かが欠けているに違いありません. プライベート エリアにあるコンテンツに対して 404 応答のみを表示するのはうまくいきません。

Node.js モジュール固有の静的リソース

Express.static を使用している場合でも、NodeJS は静的ファイルを提供しません。

express.js の静的ファイルへのリダイレクト

以前はこれが機能していたと断言できたかもしれませんが、何かの新しいバージョンで壊れていたのかもしれません。

  • ノード v0.8.1
  • npm 1.1.12
  • express@2.5.11
  • connect@1.9.2
4

2 に答える 2

17

ずっと私を見つめているシーシュ

app.get('/private/:file', function(req, res, next){
    console.log('about to send restricted file '+ req.params.file);
    req.url = req.url.replace(/^\/private/, '')
    staticMiddleware(req, res, next);
});

2014年11月29日編集

そのため、誰かが質問に投稿した後、私はこの回答に戻って、passportjsについて言及していても、この関数をどのように使用するかを示したことはありませんでした。

var staticMiddlewarePrivate = express['static'](__dirname + '/private');

app.get('/private/*/:file', auth.ensureAuthenticated, function(req, res, next){
    console.log('**** Private ****');
    req.url = req.url.replace(/^\/private/, '');
    staticMiddlewarePrivate(req, res, next);
});
于 2012-07-13T15:28:46.253 に答える