防火墙忽略了Symfony的注释

时间:2015-04-14 19:23:06

标签: php symfony annotations yaml

我在Symfony 2.6.6中有一个与annotations一起使用的AccountController.php文件:

<?php

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;

/**
 * @Route("/login", name="account_login")
 * @Method({"GET", "POST"})
 */
public function loginAction(Request $request) {}

/**
 * @Route("/login_check", name="account_login_check")
 * @Method({"POST"})
 */
public function loginCheckAction() {}

/**
 * @Route("/logout", name="account_logout")
 * @Method({"GET"})
 */
public function logoutAction() {}

/**
 * @Route("/register", name="account_register")
 * @Method({"GET", "POST"})
 */
public function registerAction(Request $request) {}

我在防火墙中的access_control:

access_control:
    - { path: ^/account/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/account/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/account/logout, roles: IS_AUTHENTICATED }

我尝试在logoutAction上使用@Security("has_role('is_authenticated')"),但是当我没有登录(匿名)时,它仍然允许我转到页面。

有没有办法以正确的方式使用@Security锁定函数?当我使用注释时,我的防火墙是否需要?

感谢。

1 个答案:

答案 0 :(得分:1)

这个怎么样?

- { path: ^/account/logout, roles: IS_AUTHENTICATED_FULLY }