我的移动应用程序存在一个小问题,我在AngularJS下开发。 经过身份验证后,我到达了我的申请的主页。我遇到的问题是手机上的“后退”按钮将我带回认证页面。
有没有办法不会发生这种情况?
我的登录代码:
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");
});
}
在我的logincontroller中:
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 = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[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.');
}
});
}
})
$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 :(得分:2)
为此,您可以使用$ionicHistory。
$ionicHistory.nextViewOptions({
disableBack: true
});
第二个选项是使用 removeBackView() - “完全从历史记录中删除以前的视图,包括缓存的元素和范围(如果存在)。 “
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
if(toState.name=="Login") ionicHistory.removeBackView();
});
您还可以将家庭状态设置为导航堆栈的root
$ionicHistory.nextViewOptions({
historyRoot: true
});
$state.go('app.home');