簡體   English   中英

Symfony安全文件夾與資產

[英]Symfony secure folder with assets

我正在嘗試使用某些資產(pdf文件等)來保護我的Symfony 2.7項目的公共文件夾,因此只有登錄用戶才能訪問它們。

想象一下文件夾結構:

-- web
    | -- uploads
            | -- public
            | -- secured

我希望每個人(甚至是匿名用戶)都能訪問web/uploads/public文件夾中的所有文件,但只能訪問注冊用戶訪問web/uploads/secured文件夾中的文件。

我已經嘗試在access_control使用此規則設置security.yml

    - { path: ^/uploads/secured, role: ROLE_USER }

但這僅適用於不用於公用文件夾中文件的路由。

這甚至可能嗎? 或者我需要制作某種控制器,它將覆蓋我的文件路由,另外還要檢查是否允許用戶查看文件?

查看靜態文件時不會調用Symfony(或任何其他PHP腳本)。 它僅在你的前控制器命中時被調用(app.php)。

使用您的Web服務器來保護對資產的訪問,或者將它們放在公共目錄之外並使用控制器來為它們提供服務。

從Symnfony 3.2,您可以將文件存儲在非公共路徑中。 從控制器路由文件檢查權限或您需要的任何內容。 然后,您可以使用文件控制器幫助程序來為它們提供服務。

Class FileController extends Controller 
{

  /**
  * @Route("/file/download/{id}", requirements={"id": "\d+"}, name="file_download")
  */
  public function downloadAction($id)
  {
    $file = $this->repository->find($id);
    $path = __DIR__ . '/../../var/files/' . $file->getFilePath . '/' . $file->getFileName();
    return $this->file($path);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM