我正在使用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无法识别新角色和新用户。在应用程序启动并运行时,是否可以再次调用上述方法。
答案 0 :(得分:0)
在运行时无法重新加载configure(HttpSecurity http)
,因为它是某种构建器,并且在应用程序启动时会创建spring security chain的一部分-如果您想重新加载方法,则必须在运行时替换spring安全链-这不是那么容易和推荐的方法。
如果您需要在运行时添加一些用户,请实施自定义AuthentificationProvider