在Grails中使用自己的方法扩展SpEL?

时间:2012-10-15 22:48:11

标签: grails spring-security spring-el

我想在Grails applciation中添加自定义SpEL方法,就像在this question中为普通的Spring-Security应用程序所做的那样,通过覆盖EvaluationContext。这有用吗?

如何将global-method-security插入安全配置?我可以configure security,但在那里添加什么?像

这样的东西
grails.plugins.springsecurity = {
    'global-method-security' {
        'expression-handler' {
            ref("myMethodSecurityExpressionHandler")
        }
    }
}

?但是什么代码会解释它?

调查SpringSecurityCoreGrailsPlugin.groovy也没有给我任何见解。

1 个答案:

答案 0 :(得分:2)

仅当您还安装了spring-security-acl插件时才可用。它配置expressionHandler bean:

expressionHandler(DefaultMethodSecurityExpressionHandler) {
   parameterNameDiscoverer = ref('parameterNameDiscoverer')
   permissionEvaluator = ref('permissionEvaluator')
   roleHierarchy = ref('roleHierarchy')
   trustResolver = ref('authenticationTrustResolver')
}

因此,如果你有自己的DefaultMethodSecurityExpressionHandler子类,你可以像这样替换resources.groovy中的bean:

import com.mycompany.myapp.MyMethodSecurityExpressionHandler

beans = {
   expressionHandler(MyMethodSecurityExpressionHandler) {
      parameterNameDiscoverer = ref('parameterNameDiscoverer')
      permissionEvaluator = ref('permissionEvaluator')
      roleHierarchy = ref('roleHierarchy')
      trustResolver = ref('authenticationTrustResolver')
   }
}