2013-04-18 17 views
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); 
}; 

所有成功的方法將被包裝。
此解決方案有沒有任何風險?
我們忽略了什麼嗎?
任何更好的解決方案?

+1

對我來說似乎很合理。 –

回答

0

我可以確認,你的方法可以作爲我們出於同樣的原因做同樣的事情。