有一些类似的问题,所以我尽了最大努力来表明差异,但我已经审查了他们,他们似乎不符合我的问题。
我有几个简单的使用案例...
Given I am a user
And I am not authenticated
When I use a GET request
Then I get a 200 response
Given I am a user
And I am not authenticated
When I User a POST request
Then I get a 401 response
我试着用这样的Spring安全装置来工作...
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authorize) -> authorize
.requestMatchers(HttpMethod.GET).permitAll()
.anyRequest().authenticated()
).csrf().disable();
return http.build();
}
但是当我运行并尝试使用GET请求命中http://localhost:8080
时,我仍然得到401。如果我从POM中删除所有依赖项,那么它会返回给我200。
我错过了什么我需要什么才能允许请求在没有令牌的情况下通过?
我也试过这个...
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authorize) -> authorize
.anyRequest().permitAll()
).oauth2ResourceServer( OAuth2ResourceServerConfigurer::jwt );
return http.build();
}
但这也提供了401
2条答案
按热度按时间7uhlpewt1#
您提供的第一个安全配置旨在匹配“每个GET请求”。方法签名是
requestMatchers(HttpMethod method, String... patterns)
。您的用法省略了模式,因此匹配“没有GET请求”。**注意:**我真的很惊讶这个方法不允许你为
patterns
参数传递参数,也许这是一个值得的改进建议。在您的示例中,可以执行以下操作:
注意:您至少需要指定一个身份验证机制,而您的配置中缺少该机制。
j9per5c42#
这似乎是工作...