Javascript 在“角度”模式下单击浏览器上的“后退”按钮时获取错误状态?
我有一个使用不同状态的angular js应用程序,我的第一个页面是登录页面,它包含一个忘记密码链接,点击忘记密码,应用程序将重定向到忘记密码页面,成功登录后出现仪表板,场景如下: 当我在登录页面上单击浏览器后退按钮时,我将被重定向到登录页面 当我在忘记pwd页面并单击后退按钮时,我将被重定向到登录页面,因为这是我的应用程序的第一页 我在这里面临的问题是,当我重新加载忘记密码页面并单击浏览器后退按钮时,我会被重定向到登录页面,然后再次单击后退按钮。应用程序会被重定向到仪表板,甚至没有登录到应用程序,我不会在设置状态时出错。好心帮忙 这是我的router.js在应用程序模块中, 这里的默认路线是指仪表板Javascript 在“角度”模式下单击浏览器上的“后退”按钮时获取错误状态?,javascript,angularjs,angular-ui-router,angularjs-routing,Javascript,Angularjs,Angular Ui Router,Angularjs Routing,我有一个使用不同状态的angular js应用程序,我的第一个页面是登录页面,它包含一个忘记密码链接,点击忘记密码,应用程序将重定向到忘记密码页面,成功登录后出现仪表板,场景如下: 当我在登录页面上单击浏览器后退按钮时,我将被重定向到登录页面 当我在忘记pwd页面并单击后退按钮时,我将被重定向到登录页面,因为这是我的应用程序的第一页 我在这里面临的问题是,当我重新加载忘记密码页面并单击浏览器后退按钮时,我会被重定向到登录页面,然后再次单击后退按钮。应用程序会被重定向到仪表板,甚至没有登录到应用程
.config(['$stateProvider', '$urlRouterProvider', 'DEFAULT_ROUTE', function($stateProvider, $urlRouterProvider, DEFAULT_ROUTE) {
$urlRouterProvider.otherwise(DEFAULT_ROUTE);
// application start point
$stateProvider
.state('app', {
url: '',
abstract: true,
templateUrl: 'src/app/templates/base.html',
controller: 'AppController'
});
}])
.run(['$rootScope', '$location', 'Auth', 'DEFAULT_ROUTE', function($rootScope, $location, Auth, DEFAULT_ROUTE){
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
if(!Auth.session() && $location.path() != '/forgot'){
$location.path('/login');
} else {
if($location.path() == '/login') {
//$location.path(DEFAULT_ROUTE);
$location.path('/login');
}
else if($location.path()=='/forgot'){
$location.path('/forgot');
}
}
});
}])
以下是我的登录模块路由:
config(['$stateProvider',function($stateProvider){
$stateProvider
.state('app.login', {
url: '/login',
views: {
"content": {
templateUrl: 'src/login/templates/login.html',
controller: 'loginController'
}
}
})
.state('app.forgotPassword', {
url: '/forgot',
views: {
"content": {
templateUrl: 'src/login/templates/forgotPassword.html',
controller: 'forgotPasswordController'
}
}
})
}]);
您是否保存会话信息?以饼干或其他形式?如果是,请执行以下操作
$rootScope.$on('$locationChangeStart', function (event, next, current) {
var token = $cookieStore.get('token');
if(token==null)
$location.path('/');
});
因此,基本上您需要检测状态已从哪个页面更改,然后才能达到重定向标准。您可以使用$locationChangeSuccess来实现它。有关更多信息,请参阅。如果您可以添加plunker复制您的场景,我们将通过添加缺少的部分来帮助您 我有一个Auth服务,它将数据存储到本地存储中,但只有在登录后才能完成。