Я только что наткнулся на концепцию пометки функций и популярную библиотеку 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.
}
Опять же, пометка функций просто кажется такой же проблемой, как и проверка ролей или разрешений.
Я уверен, что ошибаюсь, но я не понимаю, как. Поэтому я спрашиваю: чем пометка функций отличается от проверки авторизации и ролей/разрешений, и какие типы конкретных вариантов использования иллюстрируют эту разницу? Другими словами: Когда следует использовать проверку авторизации/ролей/разрешений, а когда следует использовать флаги функций?