新的Symfony用户......
Symfony文档中的示例实际上没有任何关于如何正确注销的示例。这是我的security.yml
<div id="copyright">
site design / logo © 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();
答案 0 :(得分:1)
无需在控制器中写入注销操作。您所要做的就是添加具有注销路径的路径。
在app/config/routing.yml
:
user_logout:
path: /logout