我想在 Grails 应用程序中添加自定义 SpEL 方法,就像 this question 中为普通 Spring-Security 应用程序所做的那样,通过覆盖EvaluationContext 。这行得通吗?
如何将 global-method-security
插入安全配置?我可以configure security ,但是那里要添加什么?类似的东西
grails.plugins.springsecurity = {
'global-method-security' {
'expression-handler' {
ref("myMethodSecurityExpressionHandler")
}
}
}
?但是什么代码会解释它呢?
研究 SpringSecurityCoreGrailsPlugin.groovy
也没有给我任何见解。
最佳答案
仅当您还安装了 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')
}
}
关于grails - 在 Grails 中用自己的方法扩展 SpEL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905090/