मैंने अपने आवेदन में एक इंटरसेप्टर बनाया है जो सत्र हानि का पता लगाता है (सर्वर HTTP 41 9 भेजता है)। इस मामले में, मुझे सर्वर से नए सत्र का अनुरोध करने की आवश्यकता है, और फिर मैं मूल अनुरोध को स्वचालित रूप से भेजना चाहता हूं।
शायद मैं अनुरोध इंटरसेप्टर में अनुरोध को सहेज सकता हूं, और फिर इसे फिर से भेज सकता हूं, लेकिन एक आसान समाधान हो सकता है।प्रतिक्रिया इंटरसेप्टर में मैं फिर से अनुरोध कैसे भेज सकता हूं?
ध्यान दें कि मुझे सत्र बनाने के लिए एक विशिष्ट webservice का उपयोग करना है।
angular.module('myapp', [ 'ngResource' ]).factory(
'MyInterceptor',
function ($q, $rootScope) {
return function (promise) {
return promise.then(function (response) {
// do something on success
return response;
}, function (response) {
if(response.status == 419){
// session lost
// create new session server-side
// Session.query();
// then send current request again
// ???
}
return $q.reject(response);
});
};
}).config(function ($httpProvider) {
$httpProvider.responseInterceptors.push('MyInterceptor');
});
आज इसे देखने वाले किसी के लिए एक नोट: v1.1.x के बाद से इंटरसेप्टर के लिए कोणीय का वाक्यविन्यास बदल गया है। प्रश्न का समाधान समान है, लेकिन किसी को नए सिंटैक्स के लिए यहां देखना चाहिए: https://docs.angularjs.org/api/ng/service/$http#interceptors –
यहां इसका एक सरल संस्करण है: http://stackoverflow.com/a/31965945/651556 – Sushil