Ich verwende grundlegende HTTP-Authentifizierung (ohne SSL zum Testen).Angular HTTP Basic Auth Logout Header-Änderung ignoriert
Die Anmeldung funktioniert gut, wir senden eine $http
Anfrage mit dem Autorisierungsheader und wenn die Anmeldung korrekt ist, funktioniert es.
Zum Ausloggen setze ich die Authorization-Header auf einen schlechten Wert und senden Sie eine $http
Anfrage, um den Server "Trick". Der Server scheint den geänderten Auth-Header zu ignorieren. Ich habe mit Entwickler-Tools in FF überprüft, dass der Header-Wert alle Einsen ist, aber die Anfrage ist immer noch erfolgreich.
Wie kann ich mich "abmelden"? Die Logout-Funktion sendet einen fehlerhaften Authorization-Header und der Browser sendet ihn gemäß Firebug. Was ist los? Dies ist eine Java EE 7 App mit Wildfly 9 und Shiro, wenn das einen Unterschied macht. Hier
ist der Code:
var DataFactory = function($http, $rootScope, $base64, $cookieStore) {
var _debug = false;
function _d(message) {
if (!_debug) {
return;
}
console.log(message);
}
function setDebug(flag) {
_debug = flag;
}
function doLogout() {
_d("Logging out");
$rootScope.globals = {};
$cookieStore.remove('globals');
$http.defaults.headers.common['Authorization'] = 'Basic 111111111111111111';
$http.get(
'http://localhost:8080/myapp/rest/v1/svc')
.then(function(data) {
alert("Logout: " + JSON.stringify(data.data));
}, function(data) {
alert("Logout Error: " + JSON.stringify(data))
});
}
function doLogin(username, password) {
var token = $base64.encode(username + ":" + password);
_d("Logging " + username + " in with token " + token);
$http.defaults.headers.common['Authorization'] = 'Basic ' + token; // jshint
// ignore:line
$rootScope.globals = {
token : token,
username : username
};
$cookieStore.put("globals", $rootScope.globals);
_d("Login finished, globals are: " + JSON.stringify($rootScope.globals));
$http.get(
'http://localhost:8080/myapp/rest/v1/svc')
.then(function(data) {
alert(JSON.stringify(data.data));
}, function(data) {
alert("Error: " + JSON.stringify(data))
});
}
;
return {
setDebug : setDebug,
doLogin : doLogin,
doLogout : doLogout
};
}
Basic Auth sendet Benutzer und Passwort mit jeder Anfrage. Was ist Abmeldung? –
Ich möchte, dass der Browser den Benutzernamen und das Passwort vergisst oder einen ungültigen (also den Code: '$ http.defaults.headers.common ['Authorization'] = 'Basic 111111111111111111';' verwendet, um eine "schlechte" Authentifizierung zu setzen string ... – mikeb