Grails过滤器或acl

时间:2013-03-31 16:39:01

标签: grails spring-security

我打算在用Groovy / Grails编写的网站上创建一个客户私人区域,每个客户都可以登录并查看自己的数据,编辑它等等。

回顾Grails提供的可用机制,我看到其中两个看起来很合适:1)过滤器 2) spring-security-acl < / p>

我已经完成了acl教程,我发现acl插件很精细。我不确定我是否真的需要高度的能够授予权利。最后,我需要的是限制每个用户只看到/编辑他自己的数据,这些数据分布在大约20个表(所有规范化,其中一些使用复合键,所有这些都由域类表示)。据我所知,我对过滤器会很好。我看到了吗?网上有这方面的例子吗? (我的意思是,由过滤器保护的应用程序)。

据我所知阅读文档,我应该以任何方式使用服务,不仅仅是控制器,以便能够精细控制正在发生的事情,无论是用户1)还是2)。还对吗?

TIA&amp;感谢您对这些初学者问题的耐心

迈克尔

编辑:我修改了Contract Controller中的list()方法并添加了一个标准,询问您的意见。我认为它几乎可以完成这项工作。当然,我还必须处理所有其他方法,如create(),save()等,并在那里添加该条件。否则我将能够例如编辑任何合同。 (用户类具有对客户端类的引用。)

def list(Integer max) {

    def user = springSecurityService.getCurrentUser()
    params.max = Math.min(max ?: 10, 100)
    def c = Contract.createCriteria()
    def isAdmin = org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')
    def results = c.list (params) {
        if (!isAdmin) {
            eq("client", user.client)
        }
    }
    [contractInstanceList: results, contractInstanceTotal: results.getTotalCount()]
}

0 个答案:

没有答案