Угловая проверка разрешений JS

0

Имейте длинный список элементов, для некоторых из которых у пользователя есть разрешения для некоторых из них. Как я могу проверить, имеет ли пользователь разрешение для определенного элемента? Я могу загрузить разрешения в контроллере, а затем, когда я повторяю список в ng-repat, вызовите метод, чтобы проверить, есть ли у этого элемента у меня разрешение - элемент находится в массиве разрешений, загруженном ранее. То, что я видел при попытке такого подхода, состоит в том, что из-за двухстороннего переноса данных это занимает много времени - проверка выполняется даже тогда, когда пользователь делает что-то еще на экране - нажатие кнопки - взаимодействие с контроллером. Каким будет наилучший способ реализации этого?

Теги:
permissions

2 ответа

0

Просто используйте технологию memoization. Проверка разрешений не должна меняться очень часто (я думаю, после формы входа в систему и после выхода из системы). Итак, вы можете сделать что-то вроде:

var memoize = require('lodash.memoize')
var hasPermission = memoize(service.hasPermission)

Если вы хотите очистить кеш, просто вызовите

hasPermission.cache.clear()

Я использовал этот подход в своих проектах с использованием CASL, и он работает довольно быстро

0

Я обновляю свой пользователь (-> разрешения) только при запуске приложения или изменении маршрута. При этом у меня нет проблем с производительностью в моем центральном методе

$rootScope.authService.hasPermission(roles)

который только проверяет результат, поэтому js не имеет возможности вычислять в шаблоне.

Ещё вопросы

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