0
是否可以在Grails过滤器中检索特定控制器操作/方法所需的角色/权限列表?从过滤器访问控制器方法所需的角色/权限
假设Spring Security的核心(2.0.x版本)插件安装和使用@Secured注释,比如一个控制器:
class PersonController {
@Secured(['ROLE_MANAGER','ROLE_USER'])
def index(Integer max) {
params.max = Math.min(max ?: 10, 100)
respond Person.list(params), model:[personInstanceCount: Person.count()]
}
@Secured(['ROLE_MANAGER'])
def show(Person personInstance) {
respond personInstance
}
}
如果用户导航到该索引操作,过滤器会得到[“ROLE_MANAGER” ,'ROLE_USER'],如果他们导航显示,过滤器会得到['ROLE_MANAGER']。我试图注入objectDefinitionSource进入过滤器,并使用objectDefinitionSource.allConfigAttributes
像下面这样:
class MyFilters {
def objectDefinitionSource
def filters = {
all(controller:'assets', action:'*', invert: true) {
before = {
// get list of spring security roles required for the controller's action
objectDefinitionSource.allConfigAttributes.each { println it }
// additional filter behavior...
}
}
}
}
但该方法表明,它显示在应用程序不只是那些具体到行动中定义的所有角色。