Puncte:2

Indicatorul CSRF nu variază în apelarea Ajax în timpul trimiterii formularului

drapel us

Am un formular cu apel invers ajax după cum urmează, pe fiecare jeton de trimitere nu variază, rămâne constant pentru toate trimiterile.

wall.routing.yml

wall.commentform:
  cale: '/commentform'
  implicite:
    _title: „Formular de comentarii”
    _form: „\Drupal\wall\Form\WallCommentPost”
  cerinte:
    _permission: „accesează conținut”
    _csrf_token: „adevărat”

In din dupa cum urmeaza

WallCommentPost.php

$ajax = [
  'callback' => [$this, '_wall_comment_ajax_form_post'],
  'wrapper' => 'field-type-replace-comment',
  'eveniment' => 'clic',
  'progres' => matrice(
    'type' => 'throbber',
    'message' => ''',
  )
];

$form['wall_submit'] = [
  '#type' => 'trimite',
  '#value' => 'Trimiteți',
  '#ajax' => $ajax,
  '#prefix' => '<div class="col-12 p-1 d-flex justify-content-between"><div class="file_name_insert file_name_insert_data-' . $nid . ' pl-4 text-truncate"> </div>',
  '#sufix' => '</div>',
  '#attributes' => matrice(
    'class' => array(
      'btn',
      $ajax_class,
      „d-niciunul”,
      'subbtn-' . $nid
    ),
    'disabled' => 'dezactivat'
  ),
];
$url = Url::fromRoute('wall.commentform');
$token = \Drupal::csrfToken()->get($url->getInternalPath());

$form['#action'] = Url::fromRoute('wall.commentform')->setOption('query', [FormBuilderInterface::AJAX_FORM_REQUEST => 1, 'token1' => $token])->toString( );
miststudent2011 avatar
drapel fr
Văd că $token este comentat, este intenționat? sau ai ratat-o?
Monika avatar
drapel us
În mod implicit, acea adresă URL generează token, tocmai am testat acest mod adăugând forțat token, totuși rămâne ca o valoare constantă.
Jaypan avatar
drapel de
Nu pot să înțeleg ce încerci să faci. Văd cum încerci să faci asta, dar nu înțeleg care este scopul tău sau ce funcționează contrar a ceea ce se așteaptă. Informații insuficiente.
miststudent2011 avatar
drapel fr
Poate vă ajută https://drupal.stackexchange.com/a/268262/ ?
Monika avatar
drapel us
Tokenul CSRF ar trebui să varieze la fiecare cerere de trimitere, acesta este scopul meu, de acum, jetonul CSRF care trece în URL rămâne constant. cum se modifică valoarea simbolului la fiecare cerere de trimitere?
Puncte:0
drapel fr

După săpături ulterioare, s-a găsit cauza pentru care jetonul CSRF nu variază.

Indicatorul CSRF depinde de sesiune.Deci, până când sesiunea este aceeași, tokenul CSRF rămâne același.

Deconectați-vă și autentificați-vă din nou și trimiteți formularul, veți primi un nou token.

Este un problema raportat în Drupal.org pentru același lucru, deși este fix pentru Drupal 8, nu funcționează așa cum era de așteptat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.