Togglz 功能开关 - 如何为具有相同逻辑的多个 Id/parms 实现激活状态(组合策略中的逻辑相同)



这是我的问题,

我有一个带有自定义策略的功能开关,名为">UserActivationStrategy"。它所做的只是,在Id字段中有一个硬编码值为">user",并在isActive(state,user)中有一些返回true/false的逻辑。

因此,要调用的策略是基于硬编码的Id确定的。这是我的application.properties和那些定义的

CustomFeature = true
CustomFeature.strategy= user
CustomFeature.param.IpAddress= xx.xx.xxx

以上告诉。。。。UserActivationStrategy是基于策略中硬编码的Id('user')调用的。在UserActivationStrategy中,我正在验证Ipaddress并返回true/false。

如果我需要对不同IpAddress的不同用户执行相同的逻辑,该怎么办。它就像组合。某些用户可以访问某些IpAddress

我无法为每个用户或每个IPAddress创建功能开关。它将创建许多功能切换。

如果我在策略中添加用户和IPAddress作为参数。我最终在单一策略中创建了许多参数,这并不好。

对此的任何解决方案都将不胜感激。谢谢

我不确定我是否完全理解您想要实现的目标。因此,您有一个单一的功能标志,如果激活,它应该评估为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中,我有一个用户列表作为参数。

示例:

CustomFeature.param.user1=127.0.0.1,127.0.0.2
CustomFeature.param.user2=127.0.0.1,127.0.0.3

所以我在激活策略中得到了featurestate.getparameter(user1),它返回所有的IPAddress。因此,基于该IP地址,iam启用/禁用功能开关。

因此,这一开始避免了我创建许多参数/功能切换。

最新更新