隐藏URL路由中的ID

时间:2014-02-24 15:29:30

标签: php symfony

我用php和symfony制作了一个项目。 我的问题如下:

在我的应用程序中,我可以上传一个对象(与文件相关联),我可以下载它。

可以通过以下路由下载:

symfony/app_dev.php/download/product/{id}

其中{id}当然是产品的ID。

如何在不显示路由中的{id}的情况下获得相同的结果?

这非常重要,因为每个用户只能下载一些确定的产品,但如果路由中显示了ID,则每个用户都可以在未经授权的情况下下载所有产品。

实际上,问题在于“在两个操作中传递{id}信息而不在路由中显示它。”

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

不知道在你的情况下是否真的建议安全性,但这是我通常使用POST代替GET

树枝:

<script>
$.post( "{{ path('download_product')}}", {
                id: 1,
            })
</script>

OR

    <form action="{{ path('download_product')}}" methode="POST">
    <input type="hidden" id="id" name="id" value="00000001"/>
    <button role="submit">
    </form>

路由:

<route id="download_product" pattern="/download/product">
        <default key="_controller">Vendor:Bundle:downloadProduct</default>
    </route>

控制器:

public function downloadProductAction()
    {        
        $request = $this->get('request');
        $id = $request->query->get('id');

        return new Response($id);
    }