Symfony Tokenized URL无法正常工作

时间:2012-07-15 05:49:47

标签: security url symfony1 routing token

通过Symfony文档,我找到了一种方法来保护带有“令牌”字段的表单。我正在尝试实现它,并且表单生成一个令牌,但它没有将它传递到“showSuccess.php”页面的URL,所以它现在显示我的_admin.php部分。

我认为它与路由有关,但我的路由与它们相同,但仍然不起作用。

car:
  class: sfDoctrineRouteCollection
  options: { model: car, column: token }
  requirements: { token: \w+ }

car_show:
  url: /car/:iditem.:sf_format
  class: sfDoctrineRoute
  options: { model: car, type: object }
  param: { module: car, action: show, sf_format: html }
  requirements: { iditem: \d+, sf_method: get }

现在表单本身需要URL中的令牌字段,但是当我提交表单时,它应该将“标记化的URL”传递给成功页面,以便可以显示部分,但URL默认为“iditem” “字段而不是”标记“字段,因此我的部分不会呈现。

我发现如果我将第二条路线的名称改为其他东西(或删除它),那么标记化的URL就可以了。但是常规URL没有。

这是我需要在类文件中更改的内容吗?

这是我的参考。 Symfony Documentation

1 个答案:

答案 0 :(得分:0)

我实际上已经明白了。第一组路线的“sfDoctrineCollection”正在创建一个“car_show”路线,所以我放在那里的路线覆盖了它。我所做的只是将第二条路线的名称更改为不同的名称并且有效。

car:
  class: sfDoctrineRouteCollection
  options: { model: car, column: token }
  requirements: { token: \w+ }

car_show_id:
  url: /car/:iditem.:sf_format
  class: sfDoctrineRoute
  options: { model: car, type: object }
  param: { module: car, action: show, sf_format: html }
  requirements: { iditem: \d+, sf_method: get }

我只需更新所有链接中对旧路线的所有引用。