Ergebnis 1 bis 4 von 4

Thema: Symfony Forms mit Contao verwenden - Invalid CSRF token

  1. #1
    Contao-Fan
    Registriert seit
    21.12.2009.
    Beiträge
    325

    Standard Symfony Forms mit Contao verwenden - Invalid CSRF token

    Hallo zusammen,

    in Contao 4.4.X konnte ich mit folgendem Workaround die Form Componente von Symfony innerhalb Contao verwenden:

    PHP-Code:
        /**
         * @param string $name
         *
         * @return FormBuilderInterface
         */
        
    protected function createFormBuilderForContao(string $name): FormBuilderInterface
        
    {
            return 
    $this->get('form.factory')->createNamedBuilder($nameFormType::class)
                ->
    add('REQUEST_TOKEN'RequestTokenType::class);
        } 
    Darüber hole ich mir in meinem Controller quasi den FormBuilder. Der RequestTokenType liefert mir quasi den Contao Request Token. Der Type sieht wie folgt aus:

    PHP-Code:
    class RequestTokenType extends HiddenType
    {
        
    /**
         * @var CsrfTokenManagerInterface
         */
        
    private $tokenManager;

        
    /**
         * @var string
         */
        
    private $tokenName;

        
    /**
         * RequestTokenType constructor.
         *
         * @param CsrfTokenManagerInterface $tokenManager
         * @param string                    $tokenName
         */
        
    public function __construct(CsrfTokenManagerInterface $tokenManagerstring $tokenName)
        {
            
    $this->tokenManager $tokenManager;
            
    $this->tokenName $tokenName;
        }

        
    /**
         * {@inheritdoc}
         */
        
    public function buildView(FormView $viewFormInterface $form, array $options)
        {
            
    parent::buildView($view$form$options);

            
    $view->vars['full_name'] = 'REQUEST_TOKEN';
        }

        
    /**
         * {@inheritdoc}
         */
        
    public function configureOptions(OptionsResolver $resolver)
        {
            
    $resolver->setDefaults([
                
    'data' => $this->tokenManager->getToken($this->tokenName)->getValue(),
            ]);
        }

        
    /**
         * @return string
         */
        
    public function getName()
        {
            return 
    'request_token';
        }

    Das hatte bisher auch immer gut geklappt. Jetzt will ich unter Contao 4.7 die gleiche Vorgehensweise machen, erhalte aber beim Absenden des Formulares dann die Meldung

    Code:
    Invalid CSRF token. Please reload the page and try again.
    Was hat sich bei Contao/Symfony verändert - hat mir da jemand einen Tip? Stehe grad auf dem Schlauch

    Danke euch !
    Viele Grüße aus dem Süden
    creativx
    ---- Planung ist Ersatz des Zufalls durch den Irrtum ----

  2. #2
    Contao-Fan
    Registriert seit
    21.12.2009.
    Beiträge
    325

    Standard

    Schade... ich häng immer noch an dem Problem
    Viele Grüße aus dem Süden
    creativx
    ---- Planung ist Ersatz des Zufalls durch den Irrtum ----

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    21.378
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Naja, wird denn auch tatsächlich ein Request Token im Frontend ausgegeben?

  4. #4
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Beiträge
    1.817
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Wie sieht das HTML aus? Ist der REQUEST_TOKEN eine eigenständige Post-Variable?

    Wird der korrekte Token-Manager verwendet? Meines Wissens ist es nicht (mehr?) Der Standard-Service von Symfony, sondern ein eigener.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •