Después de actualizar Symfony de 4.4 -> 5.3, obtengo algunas obsolescencias que no puedo encontrar para resolver.
Aquí hay 3 desaprobaciones como ejemplo:
User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.factory.service" service is deprecated, use "session.storage.factory.native", "session.storage.factory.php_bridge" or "session.storage.factory.mock_file" instead. User Deprecated: Since symfony/security-core 5.3: The "Symfony\Component\Security\Core\Event\AuthenticationFailureEvent" class is deprecated, use "Symfony\Component\Security\Http\Event\LoginFailureEvent" User Deprecated: Since symfony/http-kernel 5.3: "Symfony\Component\HttpKernel\Event\KernelEvent::isMasterRequest()" is deprecated, use "isMainRequest()" instead.Son solo 3 de más como 30 bajas. Mi pregunta es: ¿Cómo es la forma correcta de resolver estas advertencias? (Necesito resolver, porque tengo muchas solicitudes por minuto y cada vez que se escriben estas advertencias en dev.log, este archivo está explotando)
Quiero comenzar con la tercera advertencia. Aquí está el rastro:
../vendor/symfony/http-kernel/Event/KernelEvent.php:88 {▶} ../vendor/symfony/web-link/EventListener/AddLinkHeaderListener.php:41 {▶} ../vendor/symfony/event-dispatcher/Debug/WrappedListener.php:117 {▶} ../vendor/symfony/event-dispatcher/EventDispatcher.php:230 {▶} ../vendor/symfony/event-dispatcher/EventDispatcher.php:59 {▶} ../vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:151 {▶} ../vendor/symfony/http-kernel/HttpKernel.php:190 {▶} ../vendor/symfony/http-kernel/HttpKernel.php:178 {▶} ../vendor/symfony/http-kernel/HttpKernel.php:79 {▶} ../vendor/symfony/http-kernel/EventListener/ErrorListener.php:60 {▶} ../vendor/symfony/event-dispatcher/Debug/WrappedListener.php:117 {▶} ../vendor/symfony/event-dispatcher/EventDispatcher.php:230 {▶} ../vendor/symfony/event-dispatcher/EventDispatcher.php:59 {▶} ../vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:151 {▶} ../vendor/symfony/http-kernel/HttpKernel.php:218 {▶} ../vendor/symfony/http-kernel/HttpKernel.php:90 {▶} ../vendor/symfony/http-kernel/Kernel.php:199 {▶} ../public/index.php:25 {▶}Todos los archivos provienen directamente de Symfony, nada de mí, por eso mi pregunta por dónde empezar a resolver estas advertencias.
Ok, ahora estoy libre de obsolescencia, pero hay algunas cosas que hacer ahora después de actualizar de 4.4 a 5.3
Para encontrar todas las advertencias, creé un nuevo proyecto Symfony para comparar diferentes archivos.
KernelEvent::isMasterRequest()" is deprecated, use "isMainRequest()
eche un vistazo a su archivo src/Kernel.php - allí puede encontrar el método obsoleto
The "session.storage.factory.service" service is deprecated
abre tu framework.yaml y compáralo con el siguiente código. Tal vez te pueda ayudar:
session: handler_id: session.handler.native_file save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%' # 2 Days lifetime (172800 seconds) cookie_lifetime: 172800 cookie_secure: 'auto' cookie_samesite: 'lax' #storage_id: session.storage.mock_file storage_factory_id: session.storage.factory.native The "Symfony\Component\HttpFoundation\Session\SessionInterface are deprecated
Encontré esto en mi antiguo LoginAuthenticator ('App\Security...' por defecto). Reemplácelo con use Symfony\Component\HttpFoundation\RequestStack; Ahora puede inyectarlo y hacerlo disponible como $this->requestStack y luego cambiar todo $this->session con $this->requestStack->getSession() ¡Listo!
La mayoría de las demás desaprobaciones están relacionadas con el nuevo sistema basado en autenticadores que se introdujo en Symfony 5.1. Tienes que editar tu security.yaml . Os muestro mis cambios:
security: enable_authenticator_manager: true password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' providers: users_in_memory: { memory: null } app_user_provider: entity: class: App\Entity\User property: username firewalls: main: # default stuff provider: app_user_provider http_basic: ~ form_login: default_target_path: mission use_referer: true target_path_parameter: redirect_url login_path: login check_path: login entry_point: form_login access_denied_handler: App\Security\AccessDeniedHandler custom_authenticator: App\Security\CustomAuthenticator Para que las advertencias de autenticación sean más comprensibles, cree un nuevo CustomAuthenticator con el paquete maker. Ahora puede comparar su antiguo Autenticador con el nuevo y poner los nuevos métodos en su antiguo Autenticador. Hay algunos cambios que debes hacer.
Eso es todo. La mayoría de las depreciaciones deberían resolverse ahora.