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

时间:2017-02-10 22:28:20

标签: java togglz

这是我的问题,

我有一个功能开关,其中包含一个名为" UserActivationStrategy "的自定义策略。 它所做的就是,它具有硬编码值,如用户'在 Id 字段和' IpAddress ' as param 以及在 isActive(州,用户)中返回true / false的逻辑。

因此,要调用的策略是基于硬编码 ID 确定的。这是我的application.properties及其定义的

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

以上说明......根据在策略中硬编码的Id(' user')调用UserActivationStrategy。在UserActivationStrategy中,我正在验证Ipaddress并返回true / false。

那么如果我需要在具有不同IpAddress的不同用户上执行相同的逻辑呢?它就像组合。某些用户可以访问某些IpAddress。

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

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

对此的任何解决方案表示赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

我不确定我是否完全明白你想要实现的目标。因此,您有一个功能标志,如果激活,当且仅当存在特定的用户和IP地址组合时,它应评估为true

如果是这样,您应该创建一个策略,可以使用编码所有允许组合的字符串进行配置。类似的东西:

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

策略必须解析此表示并检查其中一个允许的组合。

答案 1 :(得分:0)

所以我找到了解决方案。在我的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启用/禁用功能开关。

所以这个先发者避免我创造许多params / feature swtiches。