Переключатель функций Togglz - Как реализовать ActivationStategy для нескольких идентификаторов / парм, имеющих одинаковую логику (одинаковая логика в стратегии для комбинаций)
Вот мой вопрос,
У меня есть переключатель функций с пользовательской стратегией под названием " UserActivationStrategy ". Все, что он делает, это имеет жестко закодированное значение " user " в поле Id и " IpAddress " в качестве param и некоторую логику для возврата true / false в isActive (state, user).
Таким образом, стратегия, которую нужно вызвать, определяется на основе жестко закодированного идентификатора. Вот мое application.properties с определенными
CustomFeature = true
CustomFeature.strategy= user
CustomFeature.param.IpAddress= xx.xx.xxx
Выше сказано, что....UserActivationStrategy вызывается на основе Id('user'), который жестко задан в стратегии. В UserActivationStrategy я проверяю Ipaddress и возвращаю true/false.
Так что, если мне нужно выполнить одну и ту же логику для разных пользователей с разными IpAddress. Это как комбинации. Определенный пользователь имеет доступ к определенному IpAddress.
Я не могу создать переключатель функций для каждого пользователя или для каждого IP-адреса. Это создаст много переключателей функций.
Если я добавлю пользователей и IP-адрес в качестве параметров в стратегии. Я заканчиваю тем, что создаю много параметров в одной стратегии, что не хорошо.
Любое решение этого приветствуется. Благодарю.
2 ответа
Я не уверен, полностью ли я понимаю, чего вы пытаетесь достичь. Таким образом, у вас есть один признак функции, и если он активирован, он должен оценить true
если и только если присутствует определенная комбинация пользователя и IP-адреса?
Если это так, возможно, вам следует создать единую стратегию, которая может быть настроена с использованием строки, которая кодирует все разрешенные комбинации. Что-то вроде:
user1=127.0.0.1, user2=127.0.0.2, user3=127.0.0.3
Затем вы можете настроить эту строку конфигурации в консоли администратора. Или напрямую добавьте его в файл конфигурации:
CustomFeature = true
CustomFeature.strategy= user
CustomFeature.param.combintations=user1=127.0.0.1, user2=127.0.0.2
Стратегия должна была бы проанализировать это представление и проверить одну из разрешенных комбинаций.
Так что я нашел решение для этого. В моих features.properties у меня есть список пользователей в качестве param.
Пример:
CustomFeature.param.user1=127.0.0.1,127.0.0.2
CustomFeature.param.user2=127.0.0.1,127.0.0.3
Итак, я получаю featuretate.getparameter(user1) в моей стратегии активации, которая возвращает все IP-адреса. Таким образом, основываясь на этом IPaddress, я включаю / отключаю переключатель функций.
Так что эта стратегия не позволяет мне создавать множество параметров / функций.