5

Backbone を Yii に統合しようとしているため、REST が必要です。そこで、リクエストに渡す必要があるユーザー名とパスワードを使用するYii 拡張機能restfullyiiをインストールしました。問題は、バックボーンでこれを行う方法がわからないことです。

希望するリクエストの例:

List
curl -i -H "Accept: application/json" -H "X_REST_USERNAME: admin@restuser" -H "X_REST_PASSWORD: admin@Access" http://yii-tester.local/api/sample/    
curl -i -H "Accept: application/json" -H "X_REST_USERNAME: admin@restuser" -H "X_REST_PASSWORD: admin@Access" http://yii-tester.local/api/sample/limit/1
curl -i -H "Accept: application/json" -H "X_REST_USERNAME: admin@restuser" -H "X_REST_PASSWORD: admin@Access" http://yii-tester.local/api/sample/limit/10/5 (limit/offeset)

完全に理にかなっている現在のエラー応答..:

{
    "success": false,
    "message": "You are not authorized to proform this action.",
    "data": {"errorCode":500}
}

バックボーン全体でそのような値を送信する方法を知っている人はいますか?

4

1 に答える 1

2

Backbone はその XHR リクエストを jQuery/Zepto に委譲します。これを変更する必要があります。

最も簡単な解決策は、おそらくデフォルトオプションを介し$.ajaxSetupヘッダーオプションを提供することです

ヘッダー (1.5 を追加)
デフォルト: {}

リクエストとともに送信する追加のヘッダー キーと値のペアのマップ。この設定は beforeSend 関数が呼び出される前に設定されます。したがって、ヘッダー設定の値は beforeSend 関数内から上書きできます。

次のように設定します。

$.ajaxSetup({
    headers:{
        X_REST_USERNAME: "admin@restuser",
        X_REST_PASSWORD: "admin@Access"
    }
});

送信されるすべてのリクエストには、カスタム ヘッダーが含まれます。http://jsfiddle.net/nikoshr/j5Rr4/を参照してください

または、各リクエストに追加のオプションを渡すこともできます。Backbone はそれらを jQuery に転送します。

var m = new Backbone.Model();   
m.fetch({
    headers:{
        X_REST_USERNAME: "admin@restuser",
        X_REST_PASSWORD: "admin@Access"
    }
});

http://jsfiddle.net/nikoshr/j5Rr4/2/

最後に、Backbone.sync をオーバーライドして、すべてのリクエストにヘッダーを追加できます。

Backbone.realsync = Backbone.sync;
Backbone.sync = function(method, model, options) {
    options || (options = {});
    options.headers = {
        X_REST_USERNAME: "admin@restuser",
        X_REST_PASSWORD: "admin@Access"
    };

    return Backbone.realsync.call(model, method, model, options);
};

var m = new Backbone.Model();
m.fetch();

http://jsfiddle.net/nikoshr/j5Rr4/4/

于 2012-11-29T13:31:12.173 に答える