在Spring 4.3.x中,我有一个自定义类,称之为扩展WebAuthenticationDetails的MyWebAuthenticationDetails。我需要使用application.properties中定义的该类中的属性。我通过名为AuthenticationProperties的自定义类获取这些属性,该类使用@ConfigurationProperties。通常我会在类构造函数的AuthenticationProperties中自动装配,但这对于MyWebAuthenticationDetails是不可能的。如何从我的WebAuthenticationDetails扩展中访问属性?
答案 0 :(得分:0)
由于您的MyWebAuthenticationDetails
自定义详细信息对象将通过AuthenticationDetailsSource
bean(您应该已经声明)构建,因此您可以作为注入的bean访问AuthenticationProperties
,因此您将拥有您可以访问所有属性。
一个简单的 Java 配置模板如下(请注意,这不是一个完整的功能配置,只是为了突出显示重要的配置条目):
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authenticationDetailsSource(myAuthenticationDetailsSource())/* and all the missiong HTTP configuration*/;
}
@Bean
private AuthenticationDetailsSource<HttpServletRequest, MyWebAuthenticationDetails> myAuthenticationDetailsSource() {
return new MyAuthenticationDetailsSource<HttpServletRequest, MyWebAuthenticationDetails>();
}
private final class MyAuthenticationDetailsSource extends AuthenticationDetailsSourceImpl<HttpServletRequest, MyWebAuthenticationDetails> {
@Autowired
private AuthenticationProperties authenticationProperties;
@Override
public MyWebAuthenticationDetails buildDetails(HttpServletRequest request) {
return new MyWebAuthenticationDetails(request, this.authenticationProperties);
}
}
}