我想在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
也没有给我任何见解。
答案 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')
}
}