2016-03-22 7 views
0

Emberが新しく、RESTful API経由でdjangoサーバーと通信しようとしています。これまでのところ、私はサーバから情報を得ることができましたが、情報を送り返そうとすると「CSRF Failed:CSRFトークンが見つからないか間違っています」エラー。Emberはデータをdjangoバックエンドに保存します

Chromeの開発ツールのリソースでは、Cookieがないことがわかります。私は "X-CSRFToken":私のアダプターの "クッキー"を読んでいるが、私はクッキーを持っていないので何をすべきか分からない。

は、だから私はここで

は私のコードです...行き止まりにM」:

サーバーの応答:

[{"username":"user1","password":"123","email":"[email protected]"},   
{"username":"user2","password":"456","email":"[email protected]"}] 

エンバーモデル:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    username: DS.attr(), 
    password: DS.attr(), 
    email: DS.attr() 
}); 

エンバーアダプタ:

import DS from 'ember-data'; 

    export default DS.RESTAdapter.extend({ 
    host: '/api', 
    contentType: 'application/json', 
    dataType: 'json', 

    headers: { 
    username: 'XXXX', 
    password: 'XXXX' 
}, 

buildURL: function(modelName, id, snapshot, requestType, query) { 

    var url = this._super(modelName, id, snapshot, requestType, query); 

    return url + "/"; 
} 


}); 

エンバーシリアライザ:

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: 'username' 
}); 

Ember Route: import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     return this.store.findAll('account'); 
} 
}); 

エンバーコントローラー:

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

    actions: { 

    signup(){ 
    console.log('My username is: ', this.get('username')); 
    console.log('My password is: ', this.get('password')); 
    console.log('My email is: ', this.get('email')); 

    var account = this.store.createRecord('account', { 
      username: this.get('username'), 
      password: this.get('password'), 
      email: this.get('email') 
    }); 

    account.save(); 

} 
} 
}); 

あなたの助けのために事前にありがとうございます。

答えて

0

私は私の問題を解決しました。 問題は、私がhttp://127.0.0.1:4200/の代わりにhttp://localhost:4200/を使用していたことです。そのため、djangoのクッキーが見つかりませんでした。

djangoのクッキーを見つけたら、アダプターのヘッダーに属性を追加するだけです。

私の新しいアダプタを以下に示します。

エンバーアダプタ:

import DS from 'ember-data'; 

export default DS.RESTAdapter.extend({ 
    host: '/api', 
    contentType: 'application/json', 
    dataType: 'json', 

headers: { 
    "X-CSRF-Token": 'django token', 
    username: 'XXXX', 
    password: 'XXXX' 
}, 

buildURL: function(modelName, id, snapshot, requestType, query) { 

    var url = this._super(modelName, id, snapshot, requestType, query); 

    return url + "/"; 
} 


}); 
+0

あなたはDjangoのRESTフレームワークを使用している場合は、燃えさし-ジャンゴ・アダプターをしようと考えるhttps://github.com/dustinfarris/ember - ジャンゴアダプター – dustinfarris

関連する問題