War*_*aur 5 angularjs angular-ui-router
如果用户未登录,我使用以下内容将路由重定向到登录:
angular.module('app').run(['$rootScope', '$location', '$state', 'AuthService',
function($rootScope, $location, $state, AuthService) {
/* redirect to login if not logged in */
$rootScope.$on( '$stateChangeStart',
function(e, toState, toParams, fromState, fromParams) {
if(toState.name === "login"){
return; // already going to login
}
if(!AuthService.user) {
e.preventDefault();
$state.go('login');
}
});
}]);
Run Code Online (Sandbox Code Playgroud)
如何将URL从"已阻止"状态传递到登录状态,以便我可以在登录后继续导航到该状态?
示例:用户单击myapp.com/#/path/to/data链接 - >重定向到myapp.com/#/login - >用户登录 - >用户路由到myapp.com/#/path/to /数据
我基本上需要将/ path/to/data发送到我的登录控制器,以便我可以处理它.我似乎无法在$ stateChangeStart监听器中的任何状态或参数变量中找到'/ path/to/data'.
该$state服务有一个href方法可以在给定状态及其参数的情况下创建 URL。由于这些已提供给状态更改侦听器,因此您可以创建一个 URL,然后将其作为参数传递给登录状态。
$rootScope.$on('$stateChangeStart',
function(e, toState, toParams, fromState, fromParams) {
if (toState.name === "login") {
return; // already going to login
}
if (!AuthService.user) {
e.preventDefault();
var redirectUrl = $state.href(toState.name, toParams);
$state.go('login', {
redirect: redirectUrl
});
}
});
Run Code Online (Sandbox Code Playgroud)
您需要redirect向登录状态添加一个参数,以便可以使用它。
| 归档时间: |
|
| 查看次数: |
1993 次 |
| 最近记录: |