3

你好

我想要或者需要通过数据库设置来控制某些操作和控制器的限制,这是完成这项工作的最佳方式吗?

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

我的第一个想法是使用@Dynamic控制器并将限制与单独的处理程序进行分组,这当然需要对其中的一些进行硬编码。这还不错 - 稍加注意就可以设置非常好的模式,(即通过使用约定命名处理程序:handlerControllerActionhandlerControllerOtherAction...

你怎么认为 ?我会朝着好的方向前进吗?

4

1 回答 1

2

执行此 IMO 的最佳方法是使用 Dynamic 注释,并为每个注释指定一个不同的名称来描述该方法的功能。由于您的代码中有有限数量的带注释的方法,因此您可以将这些名称存储在数据库中(可能会缓存它们,如上所述,以提高性能)。

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

如果我需要更完整地解释这一点,请告诉我。

史蒂夫(Deadbolt 的作者)

于 2012-05-31T07:07:57.563 回答