我想基于我的角度应用中的用户类型进行路由。基于属性的angularjs中的路由
因此,如果用户是管理员,那么应该重定向到admin.html,如果用户然后user.html基于登录后从用户键入数据库的值。
在此我想补充条件:
.when('/dashboard', {
title: 'dashboard',
templateUrl: 'partials/User.html',
controller: 'authCtrl'
})
我想基于我的角度应用中的用户类型进行路由。基于属性的angularjs中的路由
因此,如果用户是管理员,那么应该重定向到admin.html,如果用户然后user.html基于登录后从用户键入数据库的值。
在此我想补充条件:
.when('/dashboard', {
title: 'dashboard',
templateUrl: 'partials/User.html',
controller: 'authCtrl'
})
您可以使用.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")
}
})
我做到了使用UI路由器和不NG-路由器,但你仍然可以检查我的答案在这里:
Check if user has permission to access specific states
基本上,我构建一个服务并验证用户是否有权访问该状态,将用户重定向到另一个状态。
服务在每个状态变化的运行函数中被调用。
在你登录控制器注入$ routeParams依赖,那么在配置这样
路线影响到$ routeParams变量的用户这样$routeParams.user = data.user;
值(简单的用户或管理员)现在
.when('/:user', {
title: 'dashboard',
templateUrl:'partials/:user.html'
controller: 'authCtrl'
});
所以如果它是简单的用户,你将被重定向到partials/user.html,如果它是管理员,你将被重定向到partials/admin.html。
这意味着什么:用户? –
这是$ routeParams变量,所以:用户引用您的控制器中的$ routeParams.user变量。 –
这将在控制器中工作: - –
$ routeParams.user = Data.usertype; if($ routeParams.user.equals('U')) { $ location.path('user'); } else { $ location.path('dashboard'); } –
是的,它应该工作,但如果你想在控制器加载之前,那么你可以使用angular.run函数并从那里重定向。 –