Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度用户界面路由器登录要求和用户级别_Javascript_Angularjs_Firebase_Angular Ui Router_Angularfire - Fatal编程技术网

Javascript 角度用户界面路由器登录要求和用户级别

Javascript 角度用户界面路由器登录要求和用户级别,javascript,angularjs,firebase,angular-ui-router,angularfire,Javascript,Angularjs,Firebase,Angular Ui Router,Angularfire,我对Angurafire和AngularUI路由器没有什么问题 我有这个代码作为我的登录脚本,它可以工作 .factory('Auth',函数($firebaseAuth){ var auth=$firebaseAuth(); 返回auth; }) .controller('authCtrl',函数(Auth,$state){ var authCtrl=this; authCtrl.user={ 电子邮件:“”, 密码:“” }; authCtrl.login=函数(){ Auth.$sign

我对Angurafire和AngularUI路由器没有什么问题

我有这个代码作为我的登录脚本,它可以工作

.factory('Auth',函数($firebaseAuth){
var auth=$firebaseAuth();
返回auth;
})
.controller('authCtrl',函数(Auth,$state){
var authCtrl=this;
authCtrl.user={
电子邮件:“”,
密码:“”
};
authCtrl.login=函数(){
Auth.$signInWithEmailAndPassword(authCtrl.user.email,authCtrl.user.password)。然后(函数(Auth){
$state.go('home');
},函数(错误){
$(“#login”).text('Helaas,uw gegevens kom niet overeen');
});

}
假设从Firebase检索到的每个用户对象都有一个参数user.level,该参数是一个整数,整数越高,用户的权限就越高。我将按如下方式解决您的问题。 (我假设您正在使用组件或模板+控制器将单页应用程序作为标准方式,用于用户可能尝试导航到的每个页面。)

对于需要检查用户授权级别的页面/组件,我会将您的firebase服务或firebase的一些中间人注入每个控制器,然后在控制器初始化的一开始就检查用户的身份验证级别。一旦知道用户的身份验证级别,请检查其是否高于页面的个人身份验证级别任务级别,如果不是,则使用$window或$location将用户重新路由到不同的页面(可能是禁止页面或主页)

i、 e

angular.module('MyApp').controller(“adminPageController”),函数(FirebaseService,$location){
if(FirebaseSerice.user.level<5){
$location.path(“/homePage”)
}
//…此处是控制器的其余代码
}

但是,这是最简单的原因吗?因为我知道你必须在你想要的每个页面上都这样做。
$stateProvider.state('cursustext',{url:'/cursustext',templateUrl:'views/cursustext/cursustext.html',controller:'cursustextCtrl',userlevel:'5'})
没有这种方法?当您更改路径时,在进入页面之前总是会检查它。使用
loginstatus的原因也是一样的:true
?我想您可以在路由配置中添加一些可能拦截和重新路由的解析。
angular.module('MyApp').controller("adminPageController", function(FirebaseService, $location) {
    if (FirebaseSerice.user.level < 5) {
        $location.path('/homePage')
    }

    // ... rest of your code for your controller here
}