Angularjs Ionic应用程序限制用户在登录应用程序后向后移动,直到用户注销
嗨,我从Cordova和AngularJS开发了一个离子应用程序。我在这里面临的问题是,当用户打开应用程序并登录时,用户会导航到仪表板。在这里,一旦用户导航,直到用户单击注销选项或清除缓存,他/她不应该返回登录页面 但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢 我想保持用户登录状态,即使在应用程序进入后台 如何做到这一点 更新 我试过这段代码:Angularjs Ionic应用程序限制用户在登录应用程序后向后移动,直到用户注销,angularjs,cordova,ionic-framework,Angularjs,Cordova,Ionic Framework,嗨,我从Cordova和AngularJS开发了一个离子应用程序。我在这里面临的问题是,当用户打开应用程序并登录时,用户会导航到仪表板。在这里,一旦用户导航,直到用户单击注销选项或清除缓存,他/她不应该返回登录页面 但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢 我想保持用户登录状态,即使在应用程序进入后台 如何做到这一点 更新 我试过这段代码: controller('Dashboard', function ($scope, $
controller('Dashboard', function ($scope, $http, $ionicPopup, $timeout, $state, $rootScope, $interval, $sce, $ionicPlatform) {
$ionicPlatform.onHardwareBackButton(function () {
if (true) { // your check here
$ionicPopup.confirm({
title: 'Exit from App!',
template: 'are you sure you want to exit?'
}).then(function (res) {
if (res) {
navigator.app.exitApp();
}
})
}
});
这是执行良好,但问题是它执行的每一个后退按钮,我按下。因此,如果用户在仪表板内部导航到菜单,然后单击“后退”按钮(本质上)返回到上一页,而该页不是仪表板页,此时甚至会调用它。这对于用户体验来说太尴尬了。我已经在dashboard controller中添加了这段代码,而不是其他地方?我必须做什么才能仅在仪表板中调用此事件
控制器,或者是否可以这样做
但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢
我认为您应该听一下Cordova中描述的backbutton
事件。在此侦听器中,添加一些代码以避免返回登录页面
我想保持用户登录状态,即使在应用程序进入后台
如何做到这一点
您应该向应用程序中添加某种缓存,添加并保存$IonichStory
,然后在应用程序加载时首先检索/重置它,比如在配置时间
但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢
我认为您应该听一下Cordova中描述的backbutton
事件。在此侦听器中,添加一些代码以避免返回登录页面
我想保持用户登录状态,即使在应用程序进入后台
如何做到这一点
您应该向应用程序添加某种缓存,添加并保存
$IonichStory
,然后在应用程序加载时首先检索/重置它,如在配置时间。向您的登录状态定义添加resolve
属性,并且仅当用户未登录时才应解析该属性。如果用户登录,则拒绝承诺。如果承诺被拒绝,则单击“上一步”按钮不会产生任何效果,因为重定向不会发生:
.state('login', {
url: '/login',
templateUrl: 'login.html',
controller: 'login.controller as login',
resolve: {
path: function($q) {
if (isUserLoggedIn) {
$q.reject();
} else {
$q.resolve();
}
}
}
})
我想保持用户登录状态,即使在应用程序进入后台
如何做到这一点
为了保持登录状态,请使用持久机制。最简单的方法是使用
本地存储
模块,该模块使用本地存储将解析
属性添加到您的登录状态定义中,并且仅当用户未登录时才解析。如果用户登录,则拒绝承诺。如果承诺被拒绝,则单击“上一步”按钮不会产生任何效果,因为重定向不会发生:
.state('login', {
url: '/login',
templateUrl: 'login.html',
controller: 'login.controller as login',
resolve: {
path: function($q) {
if (isUserLoggedIn) {
$q.reject();
} else {
$q.resolve();
}
}
}
})
我想保持用户登录状态,即使在应用程序进入后台
如何做到这一点
为了保持登录状态,请使用持久机制。最简单的方法是使用角度本地存储
模块,该模块采用本地存储