Javascript 角度用户界面路由器登录要求和用户级别
我对Angurafire和AngularUI路由器没有什么问题 我有这个代码作为我的登录脚本,它可以工作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
.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
}