首页 > 解决方案 > 访问此资源需要 Spring JWT 完全身份验证/

问题描述

您好,我是 Spring Scurity 的新手,我想配置带有令牌验证的访问权限。我想为除登录页面和 swagger-UI 以及其他公共请求之外的所有请求验证令牌。使用我的以下配置,开放和受限端点按预期工作,但是:

似乎是我的配置过于严格,以至于我什至无法访问某些资源(.css、.js.)。我错过了什么??这是我的类中扩展 WebSecurityConfigurerAdapter.java 的配置代码:

    @Override
protected void configure(HttpSecurity http) throws Exception 
{
    // Enable CORS and disable CSRF
    http.cors().and().csrf().disable()
    // this disables session creation on Spring Security
    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
    // Set unauthorized requests exception handler
    .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
    // Set permissions on endpoints
    .authorizeRequests()
        // this endpoints are public (accessible without login)
        .antMatchers(
            "/login", 
            "/swagger-ui.html", 
            "/public/**", 
            "/swagger-ui/**"
            ).permitAll()
        // any other requests are restricted (require login and token)
        .anyRequest().authenticated().and()
    // Add JWT token filter
    .addFilterBefore(new MyJWTOncePerRequestFilter(), UsernamePasswordAuthenticationFilter.class);
}

@Bean
public CorsConfigurationSource corsConfigurationSource()
{
    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration configuration = new CorsConfiguration();
    configuration.setAllowedOrigins(ImmutableList.of("*"));
    configuration.setAllowedMethods(ImmutableList.of("HEAD","GET","POST","PUT","DELETE"));
    configuration.setAllowedHeaders(ImmutableList.of("Authorization","Cache-Control","Content-Type"));

    source.registerCorsConfiguration("/**",configuration);
    return source;
}

标签: springjwt

解决方案


推荐阅读