【问题标题】:Symfony2 logout controller not found找不到 Symfony2 注销控制器
【发布时间】:2012-08-18 19:15:08
【问题描述】:

我已经设法让登录在 Symfony2 中工作,但 /logout 有问题。我收到一个异常,说它找不到路由的控制器。但是,我的印象是 Symfony 处理注销过程就像处理登录一样?

(部分)我的 security.yml 文件:

firewalls:
    login_firewall:
        pattern:    ^/login/
        anonymous:  ~
    secured_area:
        pattern:    ^/(dashboard|directories|login_check)/
        anonymous: ~
        form_login:
            login_path:  /login/
            check_path:  /login_check/
        logout:
            path:   /logout/
            target: /

我的(相关)路线:

_login:
    pattern: /login/
    defaults: { _controller: NanoBundle:Login:index } 

_login_check:
    pattern: /login_check/

_logout:
    pattern: /logout/

--edit:注销按钮代码:

<a href="{{path('_logout')}}">Logout</a>

【问题讨论】:

  • 请显示您的注销按钮列表
  • 当然,我的注销按钮是 注销
  • 请张贴您所有的routing.yml。看起来您的 _logout 路由在其他正则表达式下
  • 没有关于注销的额外行(它在文件的末尾)。所以也许我应该编辑模式设置(虽然我认为这不会有太大变化,考虑到 login_check 工作正常)
  • 另外,当我直接访问 site.local/logout/ 时,我也会收到错误消息。不知怎的,我认为它没有被抓住......

标签: php symfony logout


【解决方案1】:

用这个 security.yml 部分修复它:

security:
    providers:
        fos_userbundle:
            id: fos_user.user_manager

encoders:
    FOS\UserBundle\Model\UserInterface: sha512

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout:       true
        anonymous:    true

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/*, role: ROLE_ADMIN }
     # URL of FOSUserBundle which need to be available to anonymous users
    - { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

试试这个可能对你有帮助..:)

【讨论】:

  • @QuintenVK : 也许它可以帮助别人。
【解决方案2】:

我最终用这个 security.yml 部分修复了它:

    secured_area:
        pattern:    .*
        security: true
        form_login:
            login_path:  /login/
            check_path:  /login_check/
        logout:
            path: /logout/
            invalidate_session: true

感谢大家为此提供帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2014-01-23
    • 2012-09-26
    • 1970-01-01
    • 2014-02-06
    • 2012-07-26
    相关资源
    最近更新 更多