# CSRF Frontend Controller

**URL:** <https://forum.shopware.com/t/csrf-frontend-controller/38134>\
**Category:** Programmierung\
**Created:** [12. Juli 2016 um 09:31 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134 "2016-07-12T09:31:02Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [12. Juli 2016 um 09:31 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134/1 "2016-07-12T09:31:02Z")

</div>

Hallo,

ich komme nicht weiter…

Ich habe einen Frontendcontroller mit 2 Actions, welche per AJAX / Einkaufswelten Widget&nbsp;aufgerufen werden. Ich habe zum Test in der config.php CSRF deaktiviert und somit funktioniert es.  
Mein Plan war dann den CSRF Token in den AJAX Request zu integrieren. Daran scheitere ich im Moment. In der Doku ist immer nur von Formularen die rede.  
Was muss ich bei einem AJAX Request tun, wie bekomme ich den Token rein?

```
 $.fn.getCategoryByParentId = function(labels, labelcolor) {

        var id = $(this).val();

        return $.ajax({
            'type': "POST",
            'data': {'parentId': id, 'token': CCC},
            'url': '/test/getCategoryByParentId',
            'async': false,
            'cache': false,
            'beforeSend': function(){
                $('.ajaxBusy').show();
            }
        });

    }

```

Alternativ habe ich wie beschrieben versucht die Actions auf die Whitelist zu setzen. Siehe unten.  
Das geht aber auch nicht.

&nbsp;

Hat jemand einen Tipp?

&nbsp;

Danke & Gruß  
Ottscho

&nbsp;

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [12. Juli 2016 um 09:47 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134/2 "2016-07-12T09:47:12Z")

</div>

Hi Ottscho,

grundsätzlich ist das ein Automatismus über&nbsp;themes/Frontend/Responsive/frontend/\_public/src/js/jquery.csrf-protection.js - dort werden Ajax-Requests mit den entsprechenden Tokens versehen. Hast du dein jQuery-Plugin vll. zu früh registriert, bspw. einfach im Template? So oder so könnte man da vll. weiter debuggen.

Daniel

---

<div class="post-metadata">

**Author:** ![ellwe](https://avatars.discourse-cdn.com/v4/letter/e/e36b37/32.png) [@ellwe](https://forum.shopware.com/u/ellwe)\
**Post date:** [12. Juli 2016 um 10:23 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134/3 "2016-07-12T10:23:15Z")

</div>

```
        return $.ajax({
            'type': "POST",
            'data': {'parentId': id},
            'url': '/test/getCategoryByParentId',
            'async': false,
            'cache': false,
            'beforeSend': function(xhr){ 
                xhr.setRequestHeader('X-CSRF-Token', CSRF.getToken());
                $('.ajaxBusy').show();
            }
        });

```

Versuch mal den Token in den Header zu packen.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [12. Juli 2016 um 12:04 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134/4 "2016-07-12T12:04:40Z")

</div>

Danke für die AW.

@daniel

Die JS Datei wird im Plugin über die Bootstrap integriert:

```
/**
     * Provides an ArrayCollection for js compressing
     * @param Enlight_Event_EventArgs $args
     *
     * @return ArrayCollection
     */
    public function addJavascriptFiles(\Enlight_Event_EventArgs $args)
    {

        $js = __DIR__. '/Views/frontend/_resources/javascript/test.js';

        return new ArrayCollection(array($js));

    }

```

&nbsp;

Das JS bezieht sich auf ein Emotion Widget, welches über die Einkaufswelt geladen wird.  
Evt. hängt es ja damit zusammen.

P.S. Trotzdem würde ich auch gerne wissen waurm es ncht über die Whitelist geht? Die ist ja so wie von euch in der Doku beschrieben im Controller eingebunden.

&nbsp;

@ellwe

Klappt, danke.

&nbsp;

---

<div class="post-metadata">

**Author:** ![ellwe](https://avatars.discourse-cdn.com/v4/letter/e/e36b37/32.png) [@ellwe](https://forum.shopware.com/u/ellwe)\
**Post date:** [13. Juli 2016 um 06:06 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134/5 "2016-07-13T06:06:27Z")

</div>

Wie sieht denn dein JS File jetzt aus? Wäre bestimmt auch für andere hilfreich.&nbsp; ![Smile](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/smile.png "Smile")&nbsp;(Ich frage, weil es ja wohl erstmla nicht direkt funktioniert hat, hast du etwas verändert?)

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [13. Juli 2016 um 11:11 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134/6 "2016-07-13T11:11:58Z")

</div>

Es hat nicht funktioniert, weil ein paar Parameter nicht gesetzt wurden, da dass Script erst im TPL war.  
Also dein Vorschlag war die Lösung.

---

<div class="post-metadata">

**Author:** ![hbee](https://avatars.discourse-cdn.com/v4/letter/h/f08c70/32.png) [@hbee](https://forum.shopware.com/u/hbee)\
**Post date:** [13. Juli 2016 um 11:41 UTC](https://forum.shopware.com/t/csrf-frontend-controller/38134/7 "2016-07-13T11:41:31Z")

</div>

> [@ottscho schrieb:](https://forum.shopware.com/profile/284/ottscho "ottscho")
> 
> P.S. Trotzdem würde ich auch gerne wissen waurm es ncht über die Whitelist geht? Die ist ja so wie von euch in der Doku beschrieben im Controller eingebunden.
> 
> &nbsp;

hi. du musst&nbsp;CSRFWhitelistAware auch implementieren. Dann sollte es auch mit der Whitlist klappen.

```
use Shopware\Components\CSRFWhitelistAware; 

class Shopware_Controllers_Frontend_OttTest extends Enlight_Controller_Action implements CSRFWhitelistAware{

}

```

&nbsp;
