当应用程序启动并运行时,如何重新加载WebSecurityConfigurerAdapter的Configure方法

时间:2018-12-03 14:17:28

标签: spring spring-boot spring-security

我正在使用Spring Boot,在Spring Security中,我们使用“ WebSecurityConfigurerAdapter”并使用方法

@Override
    protected void configure(HttpSecurity http) throws Exception {
        AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager(), tokenService(), externalServiceAuthenticator());
        http.addFilterBefore(authenticationFilter, BasicAuthenticationFilter.class)
        .csrf().disable()
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and().authorizeRequests().antMatchers(externalServiceCaller.getPrivateEndPoints())
        .hasAnyAuthority(externalServiceCaller.getAllAuthorities()).anyRequest().authenticated()
        .and().authorizeRequests().anyRequest().anonymous()
        .and().exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint())
        .and().exceptionHandling().authenticationEntryPoint(forbiddenEntryPoint());
    }

这对于现有角色和用户来说很好用,但是当我们在运行时(应用程序启动后)添加更多用户和角色时,spring security无法识别新角色和新用户。在应用程序启动并运行时,是否可以再次调用上述方法。

1 个答案:

答案 0 :(得分:0)

在运行时无法重新加载configure(HttpSecurity http),因为它是某种构建器,并且在应用程序启动时会创建spring security chain的一部分-如果您想重新加载方法,则必须在运行时替换spring安全链-这不是那么容易和推荐的方法。

如果您需要在运行时添加一些用户,请实施自定义AuthentificationProvider