查看级别安全模式

时间:2009-11-11 15:29:52

标签: java security web-applications grails spring-security

背景 我正在开发的grails应用程序具有几个级别的粒度安全性。首先,最小粒度是在控制器级别。您可以查看特定页面,也可以不查看(我使用的是Acegi spring安全插件)。第二级安全性是通过AOP方法在服务层中。您可以根据与该对象的关联方式,使用传递的属性访问某个服务方法。第三层再次位于服务层中,并通过AOP再次提供,AOP为服务方法提供建议,然后限制或改变返回的内容。

问题 我的问题的最后一个级别是显示级别。某些用户无法获取某些页面的链接或无法查看其他信息。实现这个的最佳方法是什么?目前我使用安全标记库并直接在我的gsp上使用ifAnyGranted或ifAllGranted等。将来可能需要拥有更复杂的权限。是否应该将此安全性撤回到控制器,然后传递给模型,以便您可以执行<g:if test="${hasSomeViewRight}"></g:if>之类的操作?

我觉得这两种方式都不是很简洁。对此有更好的模式吗?

1 个答案:

答案 0 :(得分:0)

是的,它应该被拉回控制器。

也就是说,在asp.net mvc中,通常通过拥有一个视图模型来完成,所以你的模型不会充满与特定视图相关的东西。

聚苯乙烯。我认为“hasSomeViewRight”就像“canDeleteProducts”,canUpdateProducts之类的。