3

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

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

grails.plugins.springsecurity = {
    'global-method-security' {
        'expression-handler' {
            ref("myMethodSecurityExpressionHandler")
        }
    }
}

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

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

4

1 回答 1

2

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

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

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

import com.mycompany.myapp.MyMethodSecurityExpressionHandler

beans = {
   expressionHandler(MyMethodSecurityExpressionHandler) {
      parameterNameDiscoverer = ref('parameterNameDiscoverer')
      permissionEvaluator = ref('permissionEvaluator')
      roleHierarchy = ref('roleHierarchy')
      trustResolver = ref('authenticationTrustResolver')
   }
}
于 2012-10-15T23:32:09.340 回答