我对面的特征标记概念迷迷糊糊的,一个流行的开源Java的lib这个叫Togglz,其中引用了Martin Fowler的博客文章:功能检举VS授权
的基本思想是有一个配置文件,它定义了你有待处理的各种功能的一组切换。正在运行的应用程序然后使用这些切换来决定是否显示新功能。
但对我来说,这真的听起来像授权:被授权查看该内容的用户?
例如,用户应该能够看到FizzBuzz菜单吗?
在Togglz我会实现这个检查,像这样:
if(MyFeatures.ShowFizzBuzz.isActive()) {
// Show the FizzBuzz menu.
}
,比方说,阿帕奇四郎,我可以做同样的事情:
ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
if(currentUser.isPermitted(showFizzBuzz) {
// Show the FizzBuzz menu.
}
再次,功能标记只是感觉与角色或许可检查一样具有相同的确切问题。
我敢肯定我错了,但我看不出如何。所以我问:功能标记与授权和角色/权限检查有什么不同,以及具体用例的哪种类型可以说明这种差异?换句话说:何时应该使用授权/角色/权限检查,以及何时应使用功能标志?