Security GrailsSpring通过xml进行安全配置
我是GrailsSpringSecurity的新手,我想知道是否可以通过xml条目启用/禁用应用程序中的安全性 而不是 grails.plugins.springsecurity.active=true 我想从我在resources.xml文件中声明的bean中读取值 grails.plugins.springsecurity.active=com.myorg.util.BeanUtil.getBean(“repositorySettings”).getIsSecured()Security GrailsSpring通过xml进行安全配置,security,spring,grails,ldap,Security,Spring,Grails,Ldap,我是GrailsSpringSecurity的新手,我想知道是否可以通过xml条目启用/禁用应用程序中的安全性 而不是 grails.plugins.springsecurity.active=true 我想从我在resources.xml文件中声明的bean中读取值 grails.plugins.springsecurity.active=com.myorg.util.BeanUtil.getBean(“repositorySettings”).getIsSecured() 使用这种方法会产生
使用这种方法会产生错误。是否有一种方法可以实现这一点,并从resources.xml中的bean读取真/假值?这在某种程度上是可能的
resources.xml
和resources.groovy
是在插件加载之后加载的,但在插件加载之前进行解析。因此,您可以将代码放入resources.groovy
中,在插件加载配置之前,该代码将在解析过程中运行,并确定是否已启用。但是你不能用豆子来做这个,因为它要等到太晚才准备好。这在resources.xml
中是不可能的,因为这只是xml,而resources.groovy
允许groovy代码和bean定义:
import com.pbbi.mimgr.util.BeanUtil
beans = {
def grailsApplication = springConfig.unrefreshedApplicationContext.grailsApplication
def securityConfig = grailsApplication.config.grails.plugins.springsecurity
securityConfig.active = BeanUtil.getBean('repositorySettings').isSecured
}
如果
BeanUtil
访问ApplicationContext
,则此操作将不起作用。但是,如果它访问的是不是SpringBean的单例,那就好了。太好了。谢谢,我也买了。我可以从config.groovy外部读取配置。但是当securityConfig.active等于false时,我会得到以下错误:启动筛选器springSecurityFilterChain org.springframework.beans.factory.NoSuchBean定义异常:未定义名为“springSecurityFilterChain”的bean。如果.active等于false,并且是在Config.groovy中设置的,则不会发生此错误。有什么想法吗???