2015-07-13 137 views
0

我想使用grails spring security插件创建自定义权限处理程序。grails控制器中的弹簧安全自定义权限

想象一下,我有一个User类和一个具有多对多关联的公司类。

我只想让用户在属于公司时调用一个名为“删除公司”的方法。例如:

class User { 

static hasMany= [companies:Company] 
static belongsTo = [Company] 

} 

class Company { 

static hasMany = [users:User] 

} 

控制器动作看起来像以下:

def deleteCompany(Long id) { 

} 

我只希望允许用户调用是公司的一部分的方法。所以当

assert Company.get(id}.users.find { it == currentUser } 

这只是一个简单的例子。实际的结构要复杂得多。这就是为什么我想用这个弹簧安全的力量。

我已经使用Spring Security ACL发挥各地,但似乎我只能在服务,但不是在控制器上使用自定义权限

回答

0

你可以在你的控制器使用beforeInterceptor

def springSecurityService 
def beforeInterceptor=[action:this.&auth] 
private auth = { 
    def toBeCheckedId=params.id 
    if(toBeCheckedId 
      && Company.get(toBeCheckedId}.users.find { it == springSecurityService.currentUser }){ 
      redirect action:someHandlingAction 
      return false 
     } 
    } 
}