questa è la tua configurazione abbastanza straight-forward, ho un intercettore http che è alla ricerca di 401S, se trovato l'utente viene reindirizzato alla pagina di login:
function($location, $q)
{
return {
request: function (config) {
return config || $q.when(config);
},
requestError: function(request){
return $q.reject(request);
},
response: function (response) {
return response || $q.when(response);
},
responseError: function (response)
{
if (response && response.status === 401)
{
$location.path('/login');
}
return $q.reject(response);
}
};
}
Il problema è la chiamata $location.path('/login')
non sembra funzionare, il percorso è completamente ignorato e rimango sulla rotta (anche se una pagina vuota) ero su quando scade la mia sessione. Una soluzione possibile è utilizzare il tradizionale window.location = '/#!/login';
ma trovo che sia meno che ideale. Trovo anche che se rimuovo la riga return $q.reject(response);
, la faccio funzionare, MA questo introduce un altro errore in cui la proprietà dei dati della risposta non può essere trovata (soluzione discussa qui: Angular.js $http.post TypeError: Cannot read property 'data' of undefined).
Sono in esecuzione angolare 1.2.21.
Qualche idea su cosa potrebbe succedere qui? Tornando a window.location non è la fine del mondo, ma mi piacerebbe una bella soluzione per questo mistero :).
Grazie in anticipo.
Domanda correlata: http://stackoverflow.com/questions/19499323/location-path-doesnt-change-in-a-factory-with-angularjs – Sirozha