Php Symfony2随机获取禁止错误

Php Symfony2随机获取禁止错误,php,symfony,fosuserbundle,permission-denied,Php,Symfony,Fosuserbundle,Permission Denied,我有一个扩展FOSUserBundle的AcmeUserBundle,我可以很好地登录。我有另一个AcmeTestBundle,可以在其中显示一些信息。 登录后,我有一个页面,上面有如下链接: http://localhost/smf/web/app_dev.php/test/view/1 http://localhost/smf/web/app_dev.php/test/view/2 http://localhost/smf/web/app_dev.php/test/view/3 ..

我有一个扩展FOSUserBundle的AcmeUserBundle,我可以很好地登录。我有另一个AcmeTestBundle,可以在其中显示一些信息。 登录后,我有一个页面,上面有如下链接:

 http://localhost/smf/web/app_dev.php/test/view/1
 http://localhost/smf/web/app_dev.php/test/view/2
 http://localhost/smf/web/app_dev.php/test/view/3
 ...
它们都显示相同的页面,只是特定id的信息不同。最初登录后,一切正常,但单击几下相同的链接后,我得到:

Forbidden
You don't have permission to access /smf/web/app_dev.php/test/view/2 on this server.
当我清除缓存并等待大约一分钟后,一切都恢复正常。 看起来真的很奇怪

我的路线如下所示:

acme_test_view:
    path:     /test/view/{id}
    defaults: { _controller: AcmeTestBundle:Default:view, id: null }
    requirements:
      id: \d+
    methods: [GET]
public function viewAction( $id = null) 
{
   $item = $this->getDoctrine()
            ->getRepository("AcmeTestBundle:Item")
            ->find($id);
   return $this->render("AcmeTestBundle:Default:view.html.twig", array("item" => $item));
}
默认情况下,id为null,因为如果没有提供id,我必须显示来自db的第一个条目以及所有其他条目的链接

在security.yml中,我设置了:

access_control:
    - { path: ^/test/, role: ROLE_USER}
我不确定我的问题是在用户设置、路由还是完全不同的方面。 你知道我做错了什么吗

编辑: 我的操作的简化版本如下所示:

acme_test_view:
    path:     /test/view/{id}
    defaults: { _controller: AcmeTestBundle:Default:view, id: null }
    requirements:
      id: \d+
    methods: [GET]
public function viewAction( $id = null) 
{
   $item = $this->getDoctrine()
            ->getRepository("AcmeTestBundle:Item")
            ->find($id);
   return $this->render("AcmeTestBundle:Default:view.html.twig", array("item" => $item));
}

只是获取数据并将其传递给模板。没什么特别的

问题可能是,您没有登录。 您已经为角色为_USER的用户创建了一个安全区域。如果您未登录,这将导致403错误

除此之外,您还应该声明另一个区域可以通过annonymous访问。可能您的登录操作也在防火墙后面,因此您无法访问登录表单

请查看并阅读“避免常见陷阱”一节


问候

您是否在viewAction中检查用户访问权限、角色或类似内容?如果你发布操作代码可能会有所帮助。我只是在我的操作中添加了一些代码,我没有做任何特别的事情。分析器底部工具栏告诉你什么?它将帮助您确定在这些特定情况下您是否被识别为用户。当探查器在那里时,它会说我已按我应该使用的方式登录。当我得到禁止的错误,没有其他信息显示在屏幕上。现在可以看到,有时这种情况也会发生在其他页面上,比如登录页面