Как предотвратить вызов услуги при нажатии кнопки обновления
У меня проблема в угловых. Я сделал сервис, который должен аутентифицировать пользователя, что сервис имеет две переменные, которые var isAuth
а также var IsAdmin;
что указывает на состояние пользователя.
В контроллере входа в систему я устанавливаю значение этих переменных в зависимости от состояния запроса, то у меня есть $locationChangeStart
событие, которое я ввел в него службу, чтобы я мог получить доступ к обоим isAuth
а также IsAdmin
чтобы определить, может ли пользователь получить доступ к этому маршруту или нет, до сих пор все работает нормально.
Проблема в том, что когда я нажимаю кнопку обновления, сервисы снова вызываются без, конечно, контроллера входа в систему, поэтому оба isAuth
а также IsAdmin
стать неопределенным любая идея, что я должен сделать, чтобы предотвратить это.
Вот код сервиса.
app.factory('authService', ['api','$cookieStore', function(api, $cookieStore){
var AuthentoctionControllerUrl = "http://localhost:18678/api/Authentication/";
var isAuth;
var IsAdmin;
function Login(credential){
return api.Post(AuthentoctionControllerUrl + "ByPassword" ,null , credential);
};
var Logout = function() {
$cookieStore.remove('AuthorizationHeader');
isAuth = false;
};
var AccessPrivilegesAdmin = function(route_type){
if(this.IsAdmin == true){
return true;
}
else if( route_type=="public"){
return true;
}
else{
return false;
}
};
var AccessPrivilegesAuth = function(){
return isAuth;
};
return {
Login : Login,
Logout : Logout,
isAuth : isAuth,
IsAdmin : IsAdmin,
AccessPrivilegesAuth : AccessPrivilegesAuth,
AccessPrivilegesAdmin : AccessPrivilegesAdmin
};
}]);
Ее код контроллера.
app.controller('LoginController', ['$scope', '$location', 'authService','$cookieStore', function($scope, $location, authService, $cookieStore){
$scope.loginData = {
EmailAddress : "",
password : ""
};
$scope.error; $scope.error_exist = false;
$scope.login = function(){
authService.Login($scope.loginData).success(function(response){
$cookieStore.put('AuthorizationHeader', response.Token);
authService.isAuth = true;
authService.IsAdmin = response.IsAdmin;
var authData = $cookieStore.get('AuthorizationHeader');
$location.path('categories');
}).error(function(Error){
$scope.error_exist = true;
switch(Error.ExceptionMessage){
case "201" :
$scope.error = "The emailAddress/password pair don't match an existing member"; break;
case "210" :
$scope.error = "Value cannot be null missing Email Address and/or password."; break;
case "202" :
$scope.error = "The email address you are using isn't confirmed. Please see your inbox for further instructions."; break;
default :
$scope.error = "Error with the server";
}
});
};
}]);