0
在我們的項目中,我們使用主幹來訪問REST服務。
該服務提供了一個HTTP Header,它包含一種會話令牌來驗證當前用戶。
此令牌在每個請求上都會更改。主幹全局成功處理
我們使用此令牌與我們的登錄模式,以確定是否登錄時需要的電流路徑上。
第一個想法是使用jQuery.ajaxSuccess。
$(document).ajaxSuccess(function(event, xhr, settings) {
updateToken(xhr);
});
工作差不多,但全球的成功是在骨幹成功處理後觸發的。
因此,如果任何骨幹成功處理程序向服務器啓動一個新的請求,此時它有一箇舊的令牌,並且請求將被拒絕。
呼叫updateToken在每一個成功處理程序或使用setTimeout的繼續處理是費力又容易出錯。它可能會被遺忘。
現在,我們創造了這個解決方案
var BBsync = Backbone.sync;
Backbone.sync = function(method, model, options) {
var success = options.success;
options.success = function(model, response, options) {
updateToken(options);
success(model, response, options);
};
return BBsync.call(this, method, model, options);
};
所有成功的方法將被包裝。
此解決方案有沒有任何風險?
我們忽略了什麼嗎?
任何更好的解決方案?
對我來說似乎很合理。 –