春季安全|安全配置allowall不起作用

时间:2018-10-01 09:41:25

标签: spring-boot spring-security

@EnableWebSecurity     公共类WebSecurityConfig实现WebMvcConfigurer {

@Bean
public UserDetailsService userDetailsService() throws Exception {
    InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
    manager.createUser(User.withDefaultPasswordEncoder().username("user").password("user").roles("USER").build());
    return manager;
}

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests().antMatchers("/css/**").permitAll()
        .anyRequest().authenticated();
}
}

以上代码不起作用,URL:localhost:8080 / css / styles.css重定向到登录页面。 代码布局为src / main / resources / static文件夹,其中包含html,css和js文件夹。

先谢谢了。

2 个答案:

答案 0 :(得分:3)

我认为 addResourceHandlers 方法可以为您提供帮助。

public class WebSecurityConfig implements WebMvcConfigurer {

 @Override
 public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**")
        .addResourceLocations("classpath:/static/");
 }
}

这意味着在您的静态文件夹中找到您的资源。

答案 1 :(得分:2)

不确定这是否行得通,但是当前在我的项目中,这是我的配置。并且工作正常。

    public class SecurityConfig extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests()
                .antMatchers(HttpMethod.GET, "/js/**", "/css/*", "/images/**")
                .permitAll()
                .anyRequest()
                .authenticated();
        }