这是我的问题,
我有一个功能开关,其中包含一个名为" 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作为参数。我最终在单一策略中创建了许多参数并不好。
对此的任何解决方案表示赞赏。感谢。
答案 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。