在symfony2中授权完整文件夹。

时间:2014-06-09 15:56:26

标签: symfony

我正在创建一个能够为用户存储PDF的程序。 这些PDF存储在web / uploadedFiles / uploads / documents中。

让我们说用户A上传文件X.pdf。用户A不希望用户B能够访问此文档。就像现在一样,用户B可以键入: www。[url] .com / web / uploadedFiles / uploads / documenets / x.pdf并查看该文件。 如何确保文件X.pdf仅对用户A可见(并且那些用户A表示可以查看该文件)。

firewalls:
    secured_area:
       pattern: ^/
       anonymous: ~
       http_basic:
          realm: "Secured Demo Area"

    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout:       true
        anonymous:    true

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/uploadedFiles/, role: ROLE_ADMIN }

为了让我更容易,我首先尝试制作"文件夹"仅适用于管理员。

tl; Dr:在/ web /中创建完整文件夹,仅供管理员访问。

1 个答案:

答案 0 :(得分:0)

已经很久了,但我认为我的回答可能会有所帮助。

如果必须将其保存在web下的任何目录中,则可以保护该目录htaccess,以便浏览器看不到该文件夹​​下的任何文件。您可以在该目录下拥有一个.htaccess文件,其内容为:

deny from all

然后,编写一个控制器路由,将file path / id作为参数,并根据登录用户决定文件控制。如果允许用户访问该文件。您可以阅读该文件并强制下载文件。