drupal 8 – Restaurar tempstore con otro ID de sesión

Pregunta:

Estoy construyendo la funcionalidad de inicio de sesión durante el pago y pago en Drupal 8, y estoy almacenando todos los valores en la variable tempstore de Drupal 8. Estoy capturando la identificación de sesión para este usuario anónimo. Una vez que el usuario ha iniciado sesión, su ID de sesión cambia y no puedo cargar el almacén temporal con el ID de sesión del usuario anónimo. ¿Hay alguna manera de restaurar el tempstore privado mediante otro ID de sesión de tempstore?

Entonces, la función de envío de mi formulario de inicio de sesión personalizado se parece a esto:

$anonymous_session_id = session_id();

$user = user_load_by_mail($form_state->getValue('username'));
$uid  = $user->get('uid')->value;
user_login_finalize($user);

$temp_store = \Drupal::service('user.private_tempstore')->get($anonymous_session_id . '_com_reg');

Cuando hago $temp_store->get('some_value'); no me da ningún resultado ya que no puedo restaurar los valores. ¿Alguien puede ayudar en esto?

Respuesta:

Experimenté el mismo problema al intentar pasar datos de private.tempstore de forma anónima a un usuario autenticado en Drupal 8.

La función

user_login_finalize($user);

Realiza el método de migrate (). Este método migra una sesión anónima a una sesión autenticada, pero solo el almacenamiento de sesión nativo (Symfony).

Private.tempstore debe migrarse manualmente como indica Ekta.

Si no puede o no sabe cómo implementarlo, simplemente almacene los datos en $_SESSION['yourkey'] nativo $_SESSION['yourkey']

El problema es que la sesión nativa se carga cada vez que se llama a una página, y con Tempstore tienes más control sobre esto. ¡Por eso no son las mejores soluciones !.

Esto podría ser un buen problema para Drupal Core en el futuro, migre el tempstore también cuando inicie sesión.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım