我是grails spring security的新手,我想知道是否可以通过xml条目启用/禁用我的应用程序的安全性。
而不是拥有 grails.plugins.springsecurity.active = true我想从我在resources.xml文件中声明的bean中读取值。
grails.plugins.springsecurity.active = com.myorg.util.BeanUtil.getBean(“repositorySettings”)。getIsSecured()
使用此方法会引发错误。有没有办法可以实现这一点,并从resources.xml
中的bean读取true / false值答案 0 :(得分:2)
这有点可能。插件插入后会加载resources.xml
和resources.groovy
,但之前会进行解析。因此,您可以将代码放入resources.groovy
中,该代码将在解析时运行,然后插件加载配置,并确定它是否已启用。但你不能使用bean,因为它为时已晚就不会准备好了。这在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
,那么这将无效。但如果它访问的不是Spring bean的单例,那应该没问题。