1

私のアプリケーションストアは、次のアプローチのようにファイルを使用します:

/app
  |-static
  |   |-img
  |   |-css
  |   |-js
  |-server 
  |    |-models
  |    |-routes
  |-files
     |- 594873
          |- file.txt
              .
              .
     |- 393948

フォルダ 'files' には、プライベート ユーザー ファイルが含まれています。594873 と 393948 はユーザー ID です。したがって、ユーザーのファイルを読み書きするための安全なアプローチを作成する必要があります。バックエンドでは NodeJS/express/mongoose を使用しています。

私はこのようなものを作る必要があります:

app.get('/getfile/:userid/:filename', function (req, res) {
   // Return file that contains in 'userid' folder and named 'filename'
 });

編集:

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'static')));
4

1 に答える 1

1

ユーザーを認証するためにPassportに似たものを使用していて、ユーザー オブジェクトが に格納されてreq.userいて、そのオブジェクトにidプロパティが含まれているとします。正しいアクセスをチェックするミドルウェアを作成できます。

var checkValidUser = function(req, res, next) {
  if (req.user && req.user.id && req.user.id === req.params.userid)
  {
    // user has access, calling 'next()' will pass the request to the handler
    next();
  }
  else
  {
    // user doesn't have access, return an HTTP 401 response
    res.send(401, 'Unauthorized');
  }
};

app.get('/getfile/:userid/:filename', checkValidUser, function (req, res) {
  // this will only be called when 'checkValidUser' allowed access to this file
  res.sendfile('./files/' + req.params.userid + '/' + req.params.filename); 
});
于 2013-04-30T13:35:53.540 に答える