Спутниковое и угловое взаимодействие

0

Я пытаюсь использовать как угловое разрешение, так и функцию Satellizer для проверки подлинности на основе ролей. Идея заключается в том, что Satellizer должен получить маркер от API и угловое разрешение для определения роли, основанной на указанном токене.

app.js:

.run(function(PermRoleStore, $auth) {
    PermRoleStore.defineManyRoles({
        'USER' : function() { return $auth.isAuthenticated('USER'); },
        'ADMIN' : function() { return $auth.isAuthenticated('ADMIN'); }
    });
    console.log(PermRoleStore.getStore());
})


.config(function ($authProvider, $stateProvider) {

        // USER AUTHORIZED STATES
        $stateProvider.state('Dashboard', {
            url: '/dashboard',
            templateUrl: 'views/dashboard.html',
            controller: 'Dashboard',
            data: {
                permissions: {
                    only: ['USER'],
                    redirectTo: function() {
                        return {
                            state: 'signup',
                            options: {
                                reload: true
                            }
                        };
                    }
                }
            }
        })
});

$ Auth.isAuthenticated:

    isAuthenticated = function(roleArg) {
      var token = storage.get(tokenName);

      if (roleArg === null || 'undefined') {
        roleArg = 'ANONYMOUS';
      }

      var role = token.role;
      if (roleArg != role) {
        console.log('role: ' + role);
        console.log('roleArg: ' + roleArg);
        console.log('Permission denied');
        return false;
      } else {
        return true;
    };

Проблема, с которой я сталкиваюсь, я даже не вижу, как методы PermRoleStore пытаются попытаться решить. Приложение загружается нормально, однако оно действует так, как будто оно не аутентифицировано.

Теги:

2 ответа

0

Попробовали ли вы сохранить роль пользователя в ключе данных в сателлитеторе JWT на бэкэнд и получить доступ к этим данным JWT через $auth.getPayload().

.run(function (PermRoleStore, $auth) {
PermRoleStore    
.defineRole('ADMIN', function () {
  if($auth.getPayload()) {

  if ($auth.getPayload().data.role === 'ADMIN') {
    return true;
  }
  else {
    return false;
  }
}
else {
  return false;
}
});
})
0

Прежде всего, похоже, что вы забыли

return true;

в $auth.isAuthenticated.

Для отладки вы можете дать нам пример plunker? Я бы отлаживал внутри isAuthenticated with

console.log(store);

для проверки данных хранилища разрешений. Пытаться:

PermPermissionStore.getStore();
  • 0
    Я не понимаю, что вы подразумеваете под console.log (магазин)
  • 0
    Я имел в виду, вы должны отладить данные внутри PermPermissionStore.getStore() чтобы проверить, установлены ли ваши разрешения изначально

Ещё вопросы

Сообщество Overcoder
Наверх
Меню