Deadbolt 2:完全控制数据库设置的限制

时间:2012-05-25 19:21:04

标签: java playframework authorization playframework-2.0 deadbolt

ellou'

我想要或者更确切地说需要通过数据库设置控制某些操作和控制器的限制,这是做这种工作的最佳方式吗?

我的目标是什么:我需要创建解决方案,其中会有很多用户组(存储在数据库中),并且它们将是完全动态的(在管理面板中创建和删除)。权限应该继承到子组,因此如果用户具有角色EditorsChief,他还可以执行允许所有Editor的操作。我不能仅使用@Restrict({"EditorsChief", "Editor"})注释动作/控制器,因为它们不存在(应该通过管理面板动态创建)。

我的第一个想法是使用@Dynamic控制器和分组这些限制与单独的处理程序,当然需要硬编码其中一些。它并不是很糟糕 - 有一些注意力可以设置相当好的模式,(即通过使用约定命名处理程序:handlerControllerActionhandlerControllerOtherAction ......

你有什么想法?我是朝着好的方向前进的吗?

1 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是使用动态注释,并为每个注释提供一个描述方法功能的独特名称。由于您的代码中有一定数量的带注释的方法,因此您可以将这些名称存储在数据库中(如上所述,可以将它们缓存以获得性能)。

在管理面板中,您可以将这些名称与组,角色或其他任何名称相关联,然后根据该名称执行控制。在我的脑海中,这将是数据库中的一对多关系。

如果我需要更彻底地解释一下,请告诉我。

史蒂夫(Deadbolt的作者)