2016-05-31 12 views
0

Ich habe ein Problem mit Mismatching csrf Token in KeystoneJS. ich dies in meinem Routen verwenden Datei:CSRF nicht übereinstimmendes Token

keystone.pre('routes', keystone.security.csrf.middleware.validate); 
keystone.pre('routes', keystone.security.csrf.middleware.init); 

In meinem Client-Seite Code richte ich ein x-CSRF-Token-Header mit jQuery:

$.ajaxSetup({ headers: { 'x-csrf-token' : '{{csrf_token_value}}' } }); 

nun eine Postanforderung an eine Route definiert Ich sende in meiner Routen-Datei. Das csrf-Token in meinem Anfrage-Header und mein Cookie sind identisch. Was vermisse ich?

Vielen Dank im Voraus! Daniel

Antwort

1

Die Lösung für mich war ein Meta-Tag zu machen und damit meine ajaxSetup Methode zu füllen.

<meta name="csrf-token" content="{{csrf_token_value}}"> 

$.ajaxSetup({ 
    headers: { 
     'x-csrf-token': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

nun auch das Token unterscheiden sich in meinem Kopf und Keks senden (vielleicht die ein im Cookie von KeystoneJS verschlüsselt ist?).

Ich verstehe nicht, warum es einen Unterschied macht, wenn ich den Token direkt in meine ajaxSetup Methode oder den Meta-Tag setzen?

Ich wäre nett, wenn einige es mir erklären könnten. Es würde diese Antwort definitiv als nur das "Wie" adressed und nicht das "Warum" implizieren.