gpt4 book ai didi

java - 使用 JHipster、Spring Security 和 oauth2 控制身份验证重定向

转载 作者:行者123 更新时间:2023-12-02 02:17:41 27 4
gpt4 key购买 nike

我希望能够在用户未登录时控制自动重定向到 oauth2 授权服务器。

我生成了一个 JHipster Gateway 项目,下面的代码只是该项目的副本,添加了 oAuth2ClientContextFilter 变量,即 autowired,然后我用它来setRedirectStrategy

但是,当需要使用该变量时,该变量为NULL。我做错了什么?

@EnableOAuth2Sso
@Configuration

public class OAuth2SsoConfiguration extends WebSecurityConfigurerAdapter {

private final RequestMatcher authorizationHeaderRequestMatcher;

private final CorsFilter corsFilter;

@Autowired
private OAuth2ClientContextFilter oAuth2ClientContextFilter;

private final Logger log = LoggerFactory.getLogger(OAuth2SsoConfiguration.class);

public OAuth2SsoConfiguration(@Qualifier("authorizationHeaderRequestMatcher")
RequestMatcher authorizationHeaderRequestMatcher, CorsFilter corsFilter) {
this.authorizationHeaderRequestMatcher = authorizationHeaderRequestMatcher;
this.corsFilter = corsFilter;
oAuth2ClientContextFilter.setRedirectStrategy(new RedirectStrategy() {

@Override
public void sendRedirect(HttpServletRequest request, HttpServletResponse response, String url) throws IOException {
// My Code Here
}

});

}

@Bean
public AjaxLogoutSuccessHandler ajaxLogoutSuccessHandler() {
return new AjaxLogoutSuccessHandler();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.addFilterBefore(corsFilter, CsrfFilter.class)
.headers()
.frameOptions()
.disable()
.and()
.logout()
.logoutUrl("/api/logout")
.logoutSuccessHandler(ajaxLogoutSuccessHandler())
.and()
.requestMatcher(new NegatedRequestMatcher(authorizationHeaderRequestMatcher))
.authorizeRequests()
.antMatchers("/api/profile-info").permitAll()
.antMatchers("/api/**").authenticated()
.antMatchers("/management/health").permitAll()
.antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN)
.anyRequest().permitAll();
}
}

最佳答案

混合 Autowiring 策略(字段 Autowiring 和构造函数 Autowiring )并不好,因为构造发生在@Autowired之前。因此,要么将过滤器注入(inject)构造函数:

private OAuth2ClientContextFilter oAuth2ClientContextFilter;

public OAuth2SsoConfiguration(
@Qualifier("authorizationHeaderRequestMatcher")RequestMatcher authorizationHeaderRequestMatcher,
CorsFilter corsFilter,
OAuth2ClientContextFilter oAuth2ClientContextFilter
) {
this.authorizationHeaderRequestMatcher = authorizationHeaderRequestMatcher;
this.corsFilter = corsFilter;
this.oAuth2ClientContextFilter = oAuth2ClientContextFilter;
.....
}

或者将RequestMatcher和CorsFilter移出构造函数参数并表示它们@Autowired

关于java - 使用 JHipster、Spring Security 和 oauth2 控制身份验证重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49042794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com