1

管理者バックエンドを備えた symfony 1.4 アプリケーションがあり、認証されたユーザーのみが一部の pdf / 画像を利用できるようにしたいと考えています。認証プロセスは symfony によって処理されます。

php の memory_limit 設定を超えるファイルであっても、認証されたユーザーだけがファイルをダウンロードできるようにするにはどうすればよいですか?

私が使っているWebサーバーはnginxです。

4

1 に答える 1

4

X-Sendfile(/ )を使用するX-Accel-Redirectと、PHPスクリプトが適切なヘッダーを送信して終了した後、nginxがファイルを提供します。これは適切な説明のようです。

greg0ire>これがsymfony1.4とnginxを使った私の実装です:

  1. Webの下に「secure」という名前のディレクトリを作成します
  2. 次のようにnginxを構成します。
  3. symfonyルートを作成する
  4. symfonyアクションを作成する

Nginx構成

location /secure/ {
    internal;
  }

symfonyルーティング

SecureDownload:
  url: /anything-you-want-but-secure/:filename
  options:
    segment_separators: ['/'] # filenames often contain dots
  params:
    module: YourModule
    action: secureDownload

symfonyアクション

<?php
class SecureDownloadAction extends sfAction
{
  public function execute($request)
  {
    $this->getResponse()->setHttpHeader(
      "X-Accel-Redirect",
      "/secure/" . $request->getParameter('filename'));
    $this->getResponse()->setHttpHeader(
      "Content-Disposition",
      "attachement; filename=". $request->getParameter('filename'));
    return sfView::HEADER_ONLY;
  }
}
于 2012-06-20T16:07:16.073 に答える