我正在使用Sping Boot 3.1.2,并定义了一个自定义的SecurityExpressionRoot
来处理授权过程。
然而,我有一些值作为环境变量存储,它们通过application.properties
引用:
myapp.home-org=${HOME_ORG_ID}
它们通常在应用中通过自动装配定义它们的配置类来使用:
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix = "myapp")
public class EnvironmentConfig {
/**
* UUID of the organization users are originating from.
*/
private UUID homeOrg;
}
我正在寻找一种方法来使用SecurityExpressionRoot
中的变量作为授权决策的基础。
最好的办法是什么?
2条答案
按热度按时间wecizke31#
可以通过继承Spring Class
ApplicationContextAware
或BeanFactoryPostProcessor
静态获取属性值:获取属性:
String value=SpringUtil.getProperty("myapp.home-org");
或UUID value=SpringUtil.getBean(EnvironmentConfig.class).getHomeOrg();
o8x7eapl2#
你可以定义一个“initializer”类,它将保存初始化你的自定义类所需的配置,如3)中定义的:https://www.baeldung.com/inject-properties-value-non-spring-class.2)也可以,但我发现初始化器解决方案比使用类加载器更优雅。