为什么在尝试直接访问图像时访问控制不起作用?

时间:2013-10-28 23:15:40

标签: php apache security symfony yaml

我在security.yml文件中有下一个:

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: ^/forum/, role: ROLE_USER }
- { path: /usuarios/, role: ROLE_NO_ACCESS }

但如果我尝试访问导航栏中的/public/img/usuarios/otherDirectory/内的文件,则图像会显示在浏览器中。

为什么不否认访问?

更新

我尝试将此添加到Apache站点配置(在我的localhost中):

    <Directory /home/me/MyServer/itransformer-2.0/web/public/img/usuarios>
                    AllowOverride none
                    Options -Indexes
                    Order allow,deny
                    Deny from all
    </Directory>

但我仍然可以直接访问图像。也许我做错了什么......

1 个答案:

答案 0 :(得分:0)

您的文件位于public文件夹中,因此它是public,换句话说,这不是存储私人文件的正确位置。

根据this post(或this one on Stack Overflow),您可以从控制器提供文件。因此,请尝试在受保护的URL后面使用此控制器。

要提供多个文件,您必须将文件的路径存储在数据库中。例如:

+----+------------+
| id |    path    |
+----+------------+
|  1 | image.jpg  |
|  2 | image2.jpg |
+----+------------+

文件管理在Symfony2 cookbook

中说明