Skip to content
Prev Previous commit
Next Next commit
Added all the configuration formats
  • Loading branch information
javiereguiluz committed May 21, 2016
commit 362a09fad2f84f034ba67fb7a509942a9b247c48
143 changes: 122 additions & 21 deletions cookbook/security/login_handlers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,25 +41,88 @@ and add your own logic::

Then, define a new service for this login handler:

.. code-block:: yaml
.. configuration-block::

# app/config/services.yml
services:
app.security.success_login:
class: AppBundle\Security\SuccesfulLoginHandler
.. code-block:: yaml

# app/config/services.yml
services:
app.security.success_login:
class: AppBundle\Security\SuccesfulLoginHandler

.. code-block:: xml

<!-- src/AppBundle/Resources/config/services.xml -->
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

app/config/services.xml

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch! Damn copy+paste :( Fixed.

<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

<services>
<service id="app.security.success_login"
class="AppBundle\Security\SuccesfulLoginHandler">
</service>
</services>
</container>

.. code-block:: php

// src/AppBundle/Resources/config/services.php
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

app/config/services.php

$container->register(
'app.security.success_login',
'AppBundle\Security\SuccesfulLoginHandler'
);

Lastly, add a new ``success_handler`` option under the configuration of the
firewalls where this handler will be enabled and pass the ``id`` of the service
as its value:

.. code-block:: yaml

# app/config/security.yml
firewalls:
main:
pattern: ^/
form_login:
success_handler: app.security.successful_login
.. configuration-block::

.. code-block:: yaml

# app/config/security.yml
security:
# ...
firewalls:
main:
# ...
form_login:
success_handler: app.security.successful_login

.. code-block:: xml

<!-- app/config/security.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<srv:container xmlns="http://symfony.com/schema/dic/security"
xmlns:srv="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd">

<config>
<!-- ... -->
<firewall name="main">
<!-- ... -->
<form-login success-handler="app.security.successful_login" />
</firewall>
</config>
</srv:container>

.. code-block:: php

// app/config/security.php
$container->loadFromExtension('security', array(
// ...
'firewalls' => array(
'main' => array(
// ...
'form_login' => array(
'success_handler' => 'app.security.successful_login',
),
),
),
));

Creating a Failure Login Handler
--------------------------------
Expand All @@ -70,14 +133,52 @@ First, define your own logic in a class that implements
and create a new service for it. Then, add the ``failure_handler`` configuration
option in your firewall:

.. code-block:: yaml

# app/config/security.yml
firewalls:
main:
pattern: ^/
form_login:
failure_handler: app.security.failure_login
.. configuration-block::

.. code-block:: yaml

# app/config/security.yml
security:
# ...
firewalls:
main:
# ...
form_login:
failure_handler: app.security.failure_login

.. code-block:: xml

<!-- app/config/security.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<srv:container xmlns="http://symfony.com/schema/dic/security"
xmlns:srv="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd">

<config>
<!-- ... -->
<firewall name="main">
<!-- ... -->
<form-login failure-handler="app.security.failure_login" />
</firewall>
</config>
</srv:container>

.. code-block:: php

// app/config/security.php
$container->loadFromExtension('security', array(
// ...
'firewalls' => array(
'main' => array(
// ...
'form_login' => array(
'failure_handler' => 'app.security.failure_login',
),
),
),
));

When Should Login Handlers Be Used?
-----------------------------------
Expand Down