如果用戶未通過身份驗證,我的角應用程序(SPA)需要重定向到另一臺服務器。這是一個單獨的機器,這意味着從我的角度應用程序重定向到此auth服務器時可能會有延遲。angularjs延遲加載應用程序直到指定條件
我尋找實現如下:
當應用程序請求和被加載,它要麼不顯示內容或顯示香草/簡單的頁面。
如果應用程序發現用戶未登錄或登錄過期,那麼它將繼續顯示香草頁面,同時將應用程序重定向到此auth服務器。
真的很感激在這方面的投入。
感謝,
編輯:interceptor.js代碼如下:
app.factory('authInterceptorService', ['$q', '$injector', '$location', 'localStorageService',
function ($q, $injector, $location, localStorageService) {
....
var request = function (config) {
config.headers = config.headers || {};
var fragments = getFragment();
if(fragments.access_token != undefined)
localStorageService.add("authorizationData", { token: fragments.access_token, token_type: fragments.token_type, state : fragments.state, });
var authData = localStorageService.get('authorizationData');
if(authData)
{
config.headers.Authorization = authData.token_type + ' ' + authData.token;
$location.path("/dashboard");
}
else
logout();
return config;
};
var responseError = function (rejection) {
if (rejection.status === 401) {
logout();
}
return $q.reject(rejection);
};
var logout = function()
{
localStorageService.remove('authorizationData');
var scope = 'my-scope';
var uri = addQueryString('http://www.authserver.com/OAuth/Authorize', {
'client_id': 'dsfdsafdsafdsfdsfdsafasdf',
'redirect_uri': 'www.returnuri.com',
'state': 'asdfasfsdf',
'scope': 'scope1',
'response_type': 'token'
});
window.location.replace(uri);
};
authInterceptorServiceFactory.request = request;
authInterceptorServiceFactory.responseError = responseError;
authInterceptorServiceFactory.logout = logout;
return authInterceptorServiceFactory;
}]);
});
這類似於正在被Blackunknown建議什麼。但問題是登陸頁面被完全加載,然後它被重定向到auth服務器。我知道問題在於它們是獨立的服務器,因此它們可能有不同的響應時間。