spring - 访问此资源需要 Spring JWT 完全身份验证/
问题描述
您好,我是 Spring Scurity 的新手,我想配置带有令牌验证的访问权限。我想为除登录页面和 swagger-UI 以及其他公共请求之外的所有请求验证令牌。使用我的以下配置,开放和受限端点按预期工作,但是:
- 当我尝试在浏览器中访问我的 http://localhost:8080 通常应该将我重定向到登录页面时,我收到错误 401 (type=Unauthorized, status=401) 并且此日志输出“需要完全身份验证才能访问这个资源/”。
- 此外,当我直接键入 http://localhost:8080/login 时,我只看到一个空白页面并收到类似于下一个输出错误的几个错误:“访问此资源 /styles.f1640c6a8c10910bc495.css 需要完全身份验证。
似乎是我的配置过于严格,以至于我什至无法访问某些资源(.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;
}
解决方案
推荐阅读
- ruby-on-rails - 在更新记录栏时添加关联记录
- java - Springboot - 如何使用 manifest.yml 从本地类路径访问 cacerts 文件
- javascript - 提取对象数组中未知键的值
- java - 黄瓜自动测试无法通过詹金斯找到元素
- python - Openpyxl 观察工作表的 max_row?
- sql-server - 是否可以遍历 tsql 中的数字列表?
- c++ - 自动线程恢复 C++
- android-studio - Android Studio Preview 是空白的最新更新
- laravel - 如何使用 eloquent 在 Laravel 中存储带有用户 ID 的输入数据?
- python - 带有keras的CNN,准确性保持不变并且没有提高