我是grails spring安全的新手,我想知道是否可以通过xml条目在我的应用程序中启用/禁用的安全性。
而不是grails.plugins.springsecurity.active=真正的
我想从我在resources.xml文件中声明的bean中读取值。
grails.plugins.springsecurity.active=com.myorg.util.BeanUnutil.getBean("repositorySettings").getIsSecured()
使用这种方法会产生错误。有没有一种方法可以实现这一点,并从resources.xml
这在一定程度上是可能的。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
,那么这将不起作用。但如果它访问的是不是Spring bean的singleton,那应该没问题。