New in Symfony 6.2: Security Improvements (Part 2)

Simpler Programmatic Logout

Contributed by
Arnaud Frézet and Robin Chalas
in #41406.

Similar to the simpler programmatic login feature introduced in Symfony 6.2, we're introducing a simpler way to logout users programmatically. The new method is called logout() and it's defined in the Security service:

use Symfony\Component\Security\Core\Security;
// ...

class SomeService
{
    public function __construct(
        private Security $security,
    ) {
    }

    public function someMethod()
    {
        // fetch a UserInterface object somehow (e.g. from a database)
        $user = ...

        // logout the user programmatically
        $this->security->logout($user);

        // use this optional argument if you prefer to not validate the
        // CSRF token according to the logout listener configuration
        $this->security->logout($user, validateCsrfToken: false);

        // ...
    }
}

Improved Password Form Field

Contributed by
Sébastien Alfaiate
in #46224.

A common practice when working with user passwords is to add the plaintext password field in the form as an unmapped property and store the hashed password in the database. In Symfony 6.2 we're improving the PasswordType field so you can configure more easily the property where the hashed password is stored:

$builder->add('plainPassword', PasswordType::class, [
    // the result of hashing the plaintext password will be stored in
    // a property called 'password' of the object passed to the form
    'hash_property_path' => 'password',

    // to minimize the risk of leaking the plaintext password, the
    // 'hash_property_path' option can only be used in unmapped properties
    'mapped' => false,
]);

Simpler Logout CSRF Protection

Contributed by
Wouter de Jong
in #46580.

In previous Symfony versions we simplified the configuration of the login CSRF protection. In Symfony 6.2 we're also simplifying the logout CSRF protection. Instead of dealing with the low-level csrf_token_generator option, you can now set enable_csrf: true in the logout configuration of your firewall to get the same result:

security:
   firewalls:
     main:
       logout:
-        csrf_token_generator: security.csrf.token_generator
+        enable_csrf: true

The csrf_token_generator option is still available in case your application uses a custom CSRF token generator.

Easier Way to Get the Firewall Configuration

Contributed by
Hugo Alliaume
in #46066.

The firewall is one of the most important elements of security: it defines which parts of your application are secured and how your users will be able to authenticate (e.g. login form, API token, etc).

In Symfony 6.2 we're making it easier to obtain the information of the firewall for a given request thanks to a new getFirewallConfig() method added to the Security service:

use Symfony\Bundle\SecurityBundle\Security\FirewallConfig;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Core\Security;
// ...

class SomeService
{
    public function __construct(
        private Security $security,
        private RequestStack $requestStack,
    ) {
    }

    public function someMethod()
    {
        $request = $this->requestStack->getCurrentRequest();
        /** @var FirewallConfig|null */
        $firewallConfig = $this->security->getFirewallConfig($request);

        $firewallName = $firewallConfig?->getName();

        // ...
    }
}
            <hr style="margin-bottom: 5px" />
            <div style="font-size: 90%">
                <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
            </div>

https://symfony.com/blog/new-in-symfony-6-2-security-improvements-part-2?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

Creato 3y | 24 nov 2022, 12:20:09


Accedi per aggiungere un commento

Altri post in questo gruppo

Symfony 6.4.24 released

Symfony 6.4.24 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in you

31 lug 2025, 13:10:32 | Symfony
Symfony 7.2.9 released

Symfony 7.2.9 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your

31 lug 2025, 13:10:31 | Symfony
Symfony 7.3.2 released

Symfony 7.3.2 has just been released. Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your

31 lug 2025, 13:10:30 | Symfony
A Week of Symfony #969 (July 21–27, 2025)

This week, development focused on the upcoming Symfony 7.4 and 8.0 releases. We added new features such as the ObjectMapperAwareInterface, improved value transformers in JsonStreamer, and enabled load

27 lug 2025, 09:30:15 | Symfony
SymfonyCon Amsterdam 2025: Community Evening - Let’s Celebrate 20 Years of Symfony Together!

Symfony is turning 20 and we’re throwing a party you won’t want to miss! 🥳

Join us for an unforgettable evening of drinks, music, and great company at the Kanarie Club in Amsterdam!

This year

23 lug 2025, 15:10:02 | Symfony
A Week of Symfony #968 (July 14–20, 2025)

This week, the upcoming Symfony 7.4 version improved the Serializer component by adding more prefix support to the accessor, added more code to make the JsonPath component RFC compliant, and added sup

20 lug 2025, 08:20:04 | Symfony
A Week of Symfony #967 (July 7–13, 2025)

This week, Symfony unveiled the Symfony AI initiative, a set of components and bundles designed to bring powerful AI capabilities directly into your PHP applications. In addition, we published travel

13 lug 2025, 09:20:11 | Symfony