在Symfony 2.7.7项目中,我实现了官方文档中描述的传统登录表单。不幸的是,每次用户注销时,我都会收到以下错误:
找不到路径"/logoout"的控制器。路由配置错误。
我遵循了这个配置http://symfony.com/doc/2.7/book/security.html#logging-我过去成功地做了很多次,但我找不到错误。
这是我的代码:
#security.yml
security:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/login$
anonymous: ~
main:
anonymous: ~
form_login:
login_path: /login
check_path: /login_check
secured_area:
pattern: ^/
form_login: ~
remember_me:
key: "%secret%"
lifetime: 604800
path: /
domain: ~
logout:
path: /logout
target: /login
access_control:
- { path: ^/admin/utenti/modifica-password-scaduta, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/aziende, roles: [ROLE_ADMIN, ROLE_ADMINISTRATIVE_PERSONNEL, ROLE_DOCTOR] }
- { path: ^/pazienti, roles: [ROLE_ADMIN, ROLE_ADMINISTRATIVE_PERSONNEL, ROLE_DOCTOR] }
- { path: ^/cartelle-sanitarie, roles: [ROLE_ADMIN, ROLE_ADMINISTRATIVE_PERSONNEL, ROLE_DOCTOR] }
#routing.yml
app:
resource: "@AppBundle/Controller/"
type: annotation
logout:
path: /logout
注销路径包含在路由器提供的列表中:debug
名称方法方案主机路径
login_route ANY ANY ANY/login
login_check ANY ANY ANY/login_check
登出任何任何/登出
我知道很多讨论都集中在这个问题上(即。http://www.forosdelweb.com/f68/symfony-2-7-logout-fallo-1133307/或http://ambracode.com/index/show/99164)但我找不到很多天的错误,我被卡住了!
谢谢
更新:我已经临时修复了它,它在SecurityController:中定义了一个注销操作
/**
* @Route("/logout", name="logout")
*/
public function logoutAction()
{
$this->container->get('security.context')->setToken(null);
return $this->redirect($this->generateUrl('login_route'));
}
也许这个代码可以帮助和我有同样条件的人!
我认为问题在于您正在尝试匹配/注销。您的路径中有一个前缀(secured_area)。尝试在secured_area:中使用此模式
pattern: ^/secured_area
试着在你的路由器中匹配这个。yml:
/secured_area/logout