Переключатель функций 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, я включаю / отключаю переключатель функций.

Так что эта стратегия не позволяет мне создавать множество параметров / функций.

Другие вопросы по тегам