Symfony2注销代码放置,我在哪里放置无效代码

时间:2015-08-17 20:08:06

标签: php symfony

新的Symfony用户......

Symfony文档中的示例实际上没有任何关于如何正确注销的示例。这是我的security.yml

<div id="copyright">
  site design / logo &copy; 2015 Stack Exchange Inc; 
  user contributions licensed under 
  <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">cc by-sa 3.0</a>
  with <a rel="license" href="http://blog.stackoverflow.com/2009/06/attribution-required/">
    attribution required
  </a>
</div>

我的印象是那些简单地点击/ logout路由的设置会破坏会话,用户将被重定向到登录页面。但是在尝试这样做时,我发现没有找到路由错误。

我在堆栈溢出时发现了这段代码......

security:
    encoders: 
        Symfony\Component\Security\Core\User\User: plaintext
        AppBundle\Entity\User: bcrypt
    role_hierarchy:
        ROLE_ADMIN: [ROLE_USER]
    providers:
        chain_provider: 
            chain:
                providers: [in_memory, user_db]
        in_memory:
            memory:
                users: 
                    admin: { password: adminpass, roles: ROLE_ADMIN }
        user_db:
            entity: { class: AppBundle:User, property: username }
    firewalls:
        main: 
            pattern: /.*
            form_login:
                login_path: /login
                check_path: /login_check
                default_target_path: /
            logout:
                path: /logout
                target: /
                invalidate_session:   true
                delete_cookies:
                    name:
                    path: null
                    domain: null
            security: true
            anonymous: true
    access_control:
        - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /cms/user, roles: ROLE_ADMIN }
        - { path: /.*, roles: IS_AUTHENTICATED_ANONYMOUSLY }

太好了,但是我在Symfony这么新,我不知道该把它放在哪里。 Stack上的所有示例都给出了代码,但没有说明如何实现它。我这样写一个退出动作吗?

$this->get('security.token_storage')->setToken(null);
$this->get('request')->getSession()->invalidate();

1 个答案:

答案 0 :(得分:1)

无需在控制器中写入注销操作。您所要做的就是添加具有注销路径的路径。 在app/config/routing.yml

user_logout:
    path: /logout