使用UI-router时,当用户访问需要登录的页面后,在他们登录后,我希望将他们重定向回原来的URL地址。例如:
/account/profile --> LOGIN PAGE (/login) --> /account/profile
/someother/requiredLogin/path --> LOGIN PAGE (/login) --> /someother/requiredLogin/path
我的路由:
$stateProvider
.state('accountProfile', {
url: '/account/profile',
data: {
requiresLogin: true
},
views: {
'': {
templateProvider: function($templateCache) {
return $templateCache.get('templates/profile.html');
}
}
},
})
.state('anotherPage', {
url: '/someother/path',
data: {
requiresLogin: true
},
views: {
'': {
templateProvider: function($templateCache) {
return $templateCache.get('templates/other.html');
}
}
},
})
在我的应用程序的运行块(run block)中,我有以下代码:
.run(['$rootScope', '$state', 'LoginService',
function($rootScope, $state, LoginService) {
// Change title based on the `data` object in routes
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
var requiresLogin = toState.data.requiresLogin;
if (requiresLogin && !LoginService.check()) {
event.preventDefault();
$state.go('login');
}
});
}
])
正如你所看到的,我在每个路由中添加了一个基本的requiresLogin
,它总是重定向到login
路由。那么我该如何跟踪原始URL并在登录后将用户重定向回去呢?