La mia applicazione angolare utilizza i token al portatore come indicato nella serie di articoli http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/. Ho seguito l'esempio biforcuto per aggiornare in modo continuo i token quando il token di accesso è scaduto (tramite codice http 401).Determina se il token al portatore è scaduto o è appena autorizzato
La mia domanda è come è possibile determinare se il token al portatore è scaduto o semplicemente non autorizzato in base al ruolo determinato?
Ad esempio, il mio metodo web API ha l'attributo [Authorize (Roles = "Admin")]. Quando faccio una chiamata a questo, torno il mio errore 401, che è previsto. Tuttavia, quando il mio token di accesso scade e faccio un'altra chiamata al metodo web api, restituisce anche un errore 401. Heres mio gestore responseError nel mio intercettore:
responseError: function (rejection) {
var deferred = q.defer();
if (rejection.status === 401) {
var authService = $injector.get('authService');
authService.refreshToken().then(function (response) {
_retryHttpRequest(rejection.config, deferred);
}, function() {
authService.logOut();
$location.path('/dashboard');
deferred.reject(rejection);
});
} else {
deferred.reject(rejection);
}
return deferred.promise;
}
stavo giocando intorno con cose diverse, ma in fondo, mi piacerebbe per aggiornare il mio token e inviare nuovamente la mia richiesta quando il token di accesso è scaduto; tuttavia, non desidero aggiornare il mio token se si tratta di una richiesta negata a causa del ruolo specificato.
Qualche idea?
Si dovrebbe recuperare un 403 Proibito quando si colpisce un metodo API Web con l'attributo [Authorize (Roles = "Admin")]. 401 è per l'autenticazione. –
Hmmm, dopo un po 'più di scavo, che probabilmente avrei dovuto fare in primo luogo, apparentemente l'attributo Autorizzazione API Web restituirà sempre 401 non autorizzati sia per l'autenticazione che per l'autorizzazione. – mmoreno79