我正在使用基本HTTP身份驗證(沒有SSL進行測試)。Angular HTTP基本身份驗證註銷標頭更改被忽略
登錄工作正常,我們發送$http
請求與授權標頭,如果登錄是正確的,它的工作原理。
對於註銷,我將授權標頭設置爲錯誤的值併發送$http
請求來「欺騙」服務器。服務器似乎忽略新的更改的auth頭。我使用FF中的開發人員工具驗證了標頭值全是1,但請求仍然成功。
如何「註銷」?註銷功能發送錯誤的授權標頭,瀏覽器根據螢火蟲發送它。這是怎麼回事?如果這有所作爲,那麼這是一個包含Wildfly 9和Shiro的Java EE 7應用程序。
下面是代碼:
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
};
}
基本身份驗證正在爲每個請求發送用戶名和密碼。什麼是註銷? –
我希望瀏覽器忘記用戶名和密碼,或使用無效的代碼(因此代碼:'$ http.defaults.headers.common ['Authorization'] ='基本111111111111111111';'設置一個「壞」認證字符串... – mikeb