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

标签 grails spring-security spring-el

我想在 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/

相关文章:

spring-mvc - 我应该如何将自定义 SiteMeshFilter 与 Spring 的 AbstractAnnotationConfigDispatcherServletInitializer 的实现一起使用?

java - Grails 3.1 和 spring-security-core :3. 0.3

java - Spring security 阻止用户操纵 url

java - Spring表达式语言: @Bean cannot find itself

spring - 如何在 SpEL 中引用嵌套类型?

spring - 如何在Spring Expression Language(SpEL)中连接两个字符串

grails - 无法使用save(flush:true)将对象保存到数据库

grails - grails运行应用程序错误(TNS:监听器:所有适当的实例都处于受限模式)

grails - 动态评估 el 表达式

grails - 如何将来自不同对象的值存储在一个表中