如何在自定义 Web 身份验证详细信息中使用自定义配置属性?



在Spring 4.3.x中,我有一个自定义类,称之为MyWebAuthenticationDetails,它扩展了WebAuthenticationDetails。我需要使用该类中在应用程序属性中定义的属性。我通过一个名为 AuthenticationProperties 的自定义类获取这些属性,该类使用 @ConfigurationProperties。通常我会在类构造函数上自动连接 AuthenticationProperties,但这对于 MyWebAuthenticationDetails来说是不可能的。如何从我的 WebAuthenticationDetails扩展中访问属性?

由于您的MyWebAuthenticationDetails自定义 details 对象将通过AuthenticationDetailsSourcebean(您应该已经声明(构造,因此您可以作为注入的 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);
}
}
}

最新更新