Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony 2 : Security Configuration : Login and logout handlers

Tags:

symfony

Using Symfony 2, I am looking for more information about the handlers that you can define in the security configuration file app/config/security.yml (official documentation). The documentation doesn't give any informations about handlers. Here is an extract of the security file :

# app/config/security.yml

security:        
    ...

    firewalls:                            
            somename:
        
                form_login:
                    ...
    
                    # login failure redirecting options (read further below)
                    failure_path:    /foo
                    failure_forward: false
                    failure_path_parameter: _failure_path
                    failure_handler: some.service.id
                    success_handler: some.service.id
    
    
                logout:
                    path:   /logout
                    target: /
                    invalidate_session: false
                    delete_cookies:
                        a: { path: null, domain: null }
                        b: { path: null, domain: null }
                    handlers: [some.service.id, another.service.id]
                    success_handler: some.service.id
                anonymous: ~

In both form_login ang logout part there is a success_handler field. Moreover, for logout part you can define several handlers using handlers field.

I have two questions :

  1. If I define a succes_handler service (using for example AuthenticationSuccessHandlerInterface or LogoutHandlerInterface), will it overide the default success handler provided in the framework ?

  2. For the logout part of the configuration, how work the handlersfield ?

like image 468
Cruz Avatar asked Feb 10 '15 08:02

Cruz


1 Answers

For information, in logout part of app/config/security.yml :

handlers: [some.service.id, another.service.id] => Here you have to define services implementing Symfony\Component\Security\Http\Logout\LogoutHandlerInterface. Theses handles do not need to return a response. In my case I created a simple handler that creates a flash message on logout.

success_handler: some.service.id => Here you have to define a service implementing => Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface. This handler have to return a response. This handler is called by the constructor of Symfony\Component\Security\Http\Firewall\LogoutListener (firewall listener).

like image 93
Cruz Avatar answered Nov 13 '22 08:11

Cruz