我需要在註銷時修改我的用戶對象。要做到這一點,我有一個包含以下(除其他事項外)一個security.yml -將Symfony2 LogoutSuccessHandler重定向到原始註銷目標
#...
logout:
success_handler: my.logout_success_handler
target:/
#...
...這個定義註銷成功處理程序,這是在services.yml像這樣定義 -
my.security.logout_success_handler:
class: My\Security\LogoutSuccessHandler
arguments: ["@security.context", "@doctrine.orm.default_entity_manager"]
......終於,我的處理程序的業務到底是這樣的 -
// ...
public function onLogoutSuccess(Request $request)
{
$user = $this->securityContext->getToken()->getUser();
// ... do stuff with the user object....
$this->em->flush();
// now what?
}
// ...
所以,它說:「現在怎麼辦?」我明白我需要返回一個Response對象。理想情況下,我希望該響應對象將用戶重定向到security.yml中logout.target中定義的任何內容。
有沒有簡單的方法可以查詢?或者,更好的是,還有另一種做這種事情的方式,不需要我參與請求/響應對象呢?
感謝
這裏的區別在於,即使註銷不成功,您也始終在操縱用戶。 –
實際上,看起來'LogoutHandler's *在'LogoutSuccessHandler'之後被調用*,這意味着註銷成功保證會發生。見https://github.com/symfony/symfony/blob/f828aee7f749009a574eee0a1ad5bfd092b0d488/src/Symfony/Component/Security/Http/Firewall/LogoutListener.php#L108-L118 – Jez
只有當它不成功時才進行保釋。 –