2017-05-22 9 views
1

私はAngularJSで開発したモバイルアプリには小さな問題があります。 認証された後、私は自分のアプリケーションのホームページに到着します。私が持っている問題は、私の電話の "戻る"ボタンが私を認証ページに戻すということです。ログイン後の[戻る]ボタン - モバイルアプリ

これは起こらない方法はありますか?私のAppControllerで

controller('loginCtrl', function ($scope, $rootScope, $state, $ionicLoading, AppService) { 
$scope.mail = ''; 
$scope.password = ''; 
ionic.Platform.ready(function() { }); 
$scope.login = function() { 
    $ionicLoading.show(); 
    AppService.login($scope.mail, $scope.password) 
    .then(function (resp) { 
     $ionicLoading.hide(); 

     if ($scope.token) { 
     afficherErreur = true; 
     console.info('Successfully logged in...'); 
     } 
    }); 
} 
$scope.isValid = function() { 
    var regex = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    if ($scope.mail == undefined || $scope.password == undefined) return true; 
    return !(regex.test($scope.mail) && $scope.password.length > 0); 
} 
$scope.FBLogin = function() { 
    FB.login(function (response) { 
    if (response.authResponse) { 
     console.log('Welcome! Fetching your information.... '); 
     FB.api('/me', function (response) { 
     console.log('Good to see you, ' + response.name + '.'); 
     console.log(response); 
     }); 
    } else { 
     console.log('User cancelled login or did not fully authorize.'); 
    } 
    }); 
} 

})

ログインのための私のコード:私のlogincontrollerで

var login = function($mail, $password) { 
    var data = { 
      mail: $mail, 
      password: $password 
     }; 
    return $http(
     { 
      method : 'POST', 
      url  : url + '/login', 
      headers : {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}, 
      transformRequest: function(obj) { 
       var str = []; 
       for(var p in obj) 
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
       return str.join("&"); 
      }, 
      data : data 
     }) 
     .then(function(response) { 
      var resp = response.data; 
      var status = response.status; 
      var token = response.data.token; 
      if(status == 200) { 
       $rootScope.isAuthenticated = true; 
       $rootScope.token = token; 
       storeUserCredentials($rootScope.token); 
       $rootScope.errorMessage = null; 
       $rootScope.$broadcast("authenticated", {token: token}); 
      } /*else {$rootScope.errorMessage = response.message;}*/ 
     }, function errorCallback(response) { 
      console.log("ERROR"); 
    }); 
} 

$scope.$on("authenticated", function (e, data) { 
    AppService.user().then(function (response) { 
    if (response.nbconnexions == 1 || response.nbconnexions < 1) { 
     $state.go('editProfil'); 
    } else { 
     $state.go('menu.home', null, { reload: true }); 
    } 
    }); 
}); 

があなたのために事前にありがとうございます解答

+0

ナビゲーションスタックのrootに家の状態を設定することができます。それを手助けするために、今私たちはホームページにどのようにルーティングしているかについてより多くの情報を必要としています。現在のセットアップの[mcve]はここで便利です。 – Claies

答えて

2

これは$ionicHistoryです。

$ionicHistory.nextViewOptions({ 
    disableBack: true 
}); 

そしてまた、2番目のオプションは、removeBackView()を使用することです - 「キャッシュされた要素と範囲(存在する場合)を含む、完全に歴史から前のビューを削除します。」

$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ 
    if(toState.name=="Login") ionicHistory.removeBackView(); 
    }); 

また、あなたはブラウザの歴史の中のホーム・ページとログインページを上書きすることができます

$ionicHistory.nextViewOptions({ 
    historyRoot: true 
}); 
$state.go('app.home'); 
関連する問題