Пометка функций против авторизации

Я только что наткнулся на концепцию пометки функций и популярную библиотеку Java с открытым исходным кодом для этого, которая называется Togglz, который цитирует сообщение в блоге Мартина Фаулера:

Основная идея состоит в том, чтобы иметь файл конфигурации, который определяет набор переключателей для различных функций, которые вы ожидаете. Запущенное приложение затем использует эти переключатели, чтобы решить, показывать новую функцию или нет.

Но для меня это действительно похоже на авторизацию: Разрешено ли пользователю просматривать этот контент?

Например, Должен ли пользователь видеть меню FizzBuzz или нет?

В Togglz я мог бы реализовать эту проверку так:

if(MyFeatures.ShowFizzBuzz.isActive()) {
    // Show the FizzBuzz menu.
}

Скажем, в Apache Shiro я мог бы сделать то же самое:

ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
if(currentUser.isPermitted(showFizzBuzz) {
    // Show the FizzBuzz menu.
}

Опять же, пометка функций просто кажется такой же проблемой, как и проверка ролей или разрешений.

Я уверен, что ошибаюсь, но я не понимаю, как. Поэтому я спрашиваю: чем пометка функций отличается от проверки авторизации и ролей/разрешений, и какие типы конкретных вариантов использования иллюстрируют эту разницу? Другими словами: Когда следует использовать проверку авторизации/ролей/разрешений, а когда следует использовать флаги функций?


person smeeb    schedule 21.11.2014    source источник


Ответы (2)


Я собираюсь использовать Mr. Терминология Фаулера для двух типов переключателей функций:

  • Business Toggle: это функции с долговременной конфигурацией, в которых поддерживаются все состояния.
  • Release Toggle: предназначен для помощи в переходе от старой или несуществующей реализации к «новой». Целью этого является отказ от старого способа работы, когда работа будет выполнена. Это позволяет вам, когда вы хотите сохранить текущий способ работы, пока «новый» способ не завершен. Большинство людей согласны с тем, что их следует избегать, когда это возможно.

Чем пометка функций отличается от проверки авторизации и ролей/разрешений, и какие типы конкретных вариантов использования иллюстрируют эту разницу?

Я думаю, что проверка авторизации и роли/разрешения является конфигурацией, лежащей в основе реализации Business Toggle. Аутентификация — это ваша функция Business Toggle, Широ — это инструмент, который поможет вам настроить и применить вашу функцию аутентификации. Togglz — это платформа для реализации Business Toggles или Version Toggles. Его может использовать для аутентификации.

Если вы использовали Togglz для включения/выключения аутентификации, а затем Shiro для принудительной настройки пользователя, ваш код будет выглядеть так:

if(MyFeatures.ShowFizzBuzz.isActive()) {
  ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
  if(currentUser.isPermitted(showFizzBuzz) {
    // Show the FizzBuzz menu.
  }
}

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

Когда следует использовать проверку авторизации/ролей/разрешений, а когда следует использовать флаги функций?

Я думаю, что это решение зависит от вас. Я бы сказал, что авторизация — это функция, и вы можете использовать Широ для ее реализации. Ваше приложение может иметь много других функций, которые выходят за рамки Широ, и вы захотите использовать Togglz для их включения и выключения. Я утверждаю, что любая сложная функция по-прежнему требует настройки для управления вашей бизнес-логикой.

person ajk    schedule 02.02.2015

Я не буду отвечать за логику Togglz. В документации FF4J (переключение функций для Java) вы можете найти кристально четкую схему, объясняющую разницу.

Переключение функций и авторизация

Функция — это обработка, функция, которую можно включать и отключать во время выполнения через специальную веб-консоль. Это должен основной драйвер для переключения вашего кода: нужно ли мне активировать/деактивировать через конфигурацию?

После того, как вы определите, что механизм Feature Toggle будет иметь большое значение (вы можете выбрать пример использования в нижней части страницы ff4J.org), вы можете проверить разрешения.

Проверка разрешений в контексте переключения функций предназначена для выполнения «Canary Release»: открыть новую функцию для ограниченного подмножества пользователей перед открытием для всех.

person Cédrick Lunven    schedule 01.11.2015