Nuevo en Symfony 4.3: Declaradas obsoletas las clases Role y SwitchUserRole
Uno de los objetivos principales de Symfony es simplificar algunas partes del
componente de seguridad. En Symfony 3.3 declaramos obsoleta la interfaz
RoleInterface
y en Symfony 4.1 hicimos lo mismo con la interfaz
AdvancedUserInterface
. En Symfony 4.3 hemos decidido declarar obsoletas las
clases Role
y SwitchUserRole
.
En la práctica hay muy pocas ventajas en utilizar clases en vez de cadenas de
texto para reprensentar los roles. De hecho, usar clases normalmente es una
molestia más que una ayuda, ya que siempre acabas llamando a Role::getRole()
para obtener la cadena de texto que reprensenta al nombre del rol.
Si utilizas el framework Symfony entero, no es necesario que hagas ningún cambio
en tu código porque seguramente ya utilizas cadenas de texto para los roles. Si
utilizas el componente Security suelto, tienes que refactorizar todo el
código que utilice la clase Role
(o define tu propia clase Role
si quieres
seguir usando clases).
Por otra parte, si en tu aplicación permites impersonar usuarios, entonces
tienes que refactorizar el código que haga uso de SwitchUserRole
para utilizar
en su lugar la nueva clase SwitchUserToken
:
// ANTES use Symfony\Component\Security\Core\Role\SwitchUserRole; if ($this->security->isGranted('ROLE_PREVIOUS_ADMIN')) { foreach ($this->security->getToken()->getRoles() as $role) { if ($role instanceof SwitchUserRole) { $impersonatorUser = $role->getSource()->getUser(); break; } } } // DESPUÉS use Symfony\Component\Security\Core\Authentication\Token\SwitchUserToken; $token = $this->security->getToken(); if ($token instanceof SwitchUserToken) { $impersonatorUser = $token->getOriginalToken()->getUser(); }
Esta funcionalidad fue contribuida por Christian Flothmann en el pull request #22048.
Fuente: New in Symfony 4.3: Deprecated the Role and SwitchUserRole classes
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.