2016-07-31 118 views
3

我想基于我的角度应用中的用户类型进行路由。基于属性的angularjs中的路由

因此,如果用户是管理员,那么应该重定向到admin.html,如果用户然后user.html基于登录后从用户键入数据库的值。

在此我想补充条件:

.when('/dashboard', {   
    title: 'dashboard', 
    templateUrl: 'partials/User.html', 
    controller: 'authCtrl'  
}) 

回答

0

您可以使用.run函数并检查用户,并使用$ location重定向到条件页面。

.when('/user', {   
    title: 'dashboard', 
    templateUrl: 'partials/User.html', 
    controller: 'authCtrl'  
}).when('/admin', {   
    title: 'dashboard', 
    templateUrl: 'partials/Admin.html', 
    controller: 'authCtrl'  
}) 

从运行功能

.run(function($location){ 
    console.log("run") 
    var user = "user"; 
    if(user === "Admin"){ 
     $location.path("/admin") 
    }else{ 
     $location.path("/user") 
    } 
    }) 

从控制器

.controller('authCtrl',function($location){ 
    console.log("controller") 
    var user = "admin"; 
    if(user === "admin"){ 
     $location.path("/admin") 
    }else{ 
     $location.path("/user") 
    } 
    }) 
+0

这将在控制器中工作: - –

+0

$ routeParams.user = Data.usertype; if($ routeParams.user.equals('U')) { $ location.path('user'); } else { $ location.path('dashboard'); } –

+0

是的,它应该工作,但如果你想在控制器加载之前,那么你可以使用angular.run函数并从那里重定向。 –

0

我做到了使用UI路由器和不NG-路由器,但你仍然可以检查我的答案在这里:

Check if user has permission to access specific states

基本上,我构建一个服务并验证用户是否有权访问该状态,将用户重定向到另一个状态。

服务在每个状态变化的运行函数中被调用。

0

在你登录控制器注入$ routeParams依赖,那么在配置这样

路线影响到$ routeParams变量的用户这样

$routeParams.user = data.user; 

值(简单的用户或管理员)现在

.when('/:user', { 
     title: 'dashboard', 
     templateUrl:'partials/:user.html' 
     controller: 'authCtrl' 
}); 

所以如果它是简单的用户,你将被重定向到partials/user.html,如果它是管理员,你将被重定向到partials/admin.html。

+0

这意味着什么:用户? –

+0

这是$ routeParams变量,所以:用户引用您的控制器中的$ routeParams.user变量。 –

相关问题