簡體   English   中英

角流星授權-加載頁面之前檢查用戶角色

[英]Angular-meteor authorization - check user role before loading the page

我正在使用angular 1.5 +,ange-meteor 1.3.10和alanning:roles,並希望禁止非管理員角色進入管理員路徑...該怎么做?

export default angular.module(name, [
angularMeteor,
'angular-meteor.auth'
]).component(name, {
    templateUrl: `imports/ui/components/${name}/${name}.html`,
    controllerAs: name,
    controller: Admin
})
    .config(config);

function config($stateProvider) {
    'ngInject';
    $stateProvider
        .state('admin', {
            url: '/admin',
            template: '<admin></admin>',
            resolve: {
                user: ($q) => {
                    let user = Meteor.user();
                    console.log(Meteor.user());
                    console.log(Meteor.userId());
                    // let user = $auth.currentUser;
                    var user1 = Meteor.users.findOne({ _id: Meteor.userId() });
                    console.log(user);
                    console.log(user1);
                    if (Meteor.userId() === null) {
                        console.log("null user");
                        return $q.reject();
                    } else if (Roles.userIsInRole(user, ["admin"])) {
                        console.log("admin user");
                        return $q.resolve();
                    }
                    else {
                        console.log("reject");
                        return $q.reject();
                    }
                }


            }
        });
}

在這里,我無法讓用戶檢查userInRole ...在這里,我只能獲取用戶Meteor.userId() ,我該怎么辦?

屏幕

我也使用了調整角色,我解決了這個問題,希望對您有用。

 angular.module("app").run(function ($rootScope, $state, toastr) { $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) { switch(error) { case "AUTH_REQUIRED": $state.go('anon.login'); break; case "FORBIDDEN": //$state.go('root.home'); break; case "UNAUTHORIZED": toastr.error("Acceso Denegado"); toastr.error("No tiene permiso para ver esta opción"); break; default: $state.go('internal-client-error'); } }); $rootScope.$on('$stateChangeStart', function(next, current) { NProgress.set(0.2); }); $rootScope.$on('$stateChangeSuccess', function(next, current) { NProgress.set(1.0); }); }); .state('root.view', { url: '/view/:param1/:param2/:param3', templateUrl: 'client/view.html', controller: 'ViewCtrl as vc', resolve: { "currentUser": ["$meteor", "toastr", function($meteor, toastr){ return $meteor.requireValidUser(function(user) { if(user.roles[0] == "rolUser1" || user.roles[0] == "rolUser2"){ return true; }else{ return 'UNAUTHORIZED'; } }); }] } }) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM