- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对spring security配置的理解http.anyRequest().authenticated()
是任何请求都必须经过身份验证,否则我的 Spring 应用程序将返回 401 响应。
不幸的是,我的 spring 应用程序不会以这种方式运行,而是允许未经身份验证的请求通过。
这是我的 Spring 安全配置:
@Configuration
@Order(1)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private AuthenticationTokenFilter authenticationTokenFilter;
@Autowired
private TokenAuthenticationProvider tokenAuthenticationProvider;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(authenticationTokenFilter, BasicAuthenticationFilter.class)
.antMatcher("/*")
.authenticationProvider(tokenAuthenticationProvider)
.authorizeRequests()
.anyRequest().authenticated();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/index.html")
.antMatchers("/error")
.antMatchers("/swagger-ui.html")
.antMatchers("/swagger-resources");
}
}
@RestController
@RequestMapping("/reports")
@Slf4j
public class ReportController {
@RequestMapping()
@ResponseBody
public List<String> getIds() {
log.info(SecurityContextHolder.getContext().getAuthentication());
return Collections.emptyList();
}
}
-> curl 'localhost:8080/reports/'
[]
SecurityContextHolder.getContext().getAuthentication()
一片空白。
最佳答案
它实际上按预期工作,这是由于您编写配置的方式。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(authenticationTokenFilter, BasicAuthenticationFilter.class)
.antMatcher("/*")
.authenticationProvider(tokenAuthenticationProvider)
.authorizeRequests()
.anyRequest().authenticated();
}
antMatcher
这里的意思是后面的所有内容
antMatcher
适用于写在那里的路径/表达式(参见
AntPathMatcher
的 Javadoc。
/*
这适用于
/reports
它不适用于
/reports/
(是的,最后
/
很重要!)。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(authenticationTokenFilter, BasicAuthenticationFilter.class)
.antMatcher("/**")
.authenticationProvider(tokenAuthenticationProvider)
.authorizeRequests()
.anyRequest().authenticated();
}
/**
而不是
/*
.然而,这基本上与省略
antMatcher
相同。并简单地写
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(authenticationTokenFilter, BasicAuthenticationFilter.class)
.authenticationProvider(tokenAuthenticationProvider)
.authorizeRequests()
.anyRequest().authenticated();
}
关于Spring 安全配置 anyRequest().authenticated() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49817729/
我对spring security配置的理解http.anyRequest().authenticated()是任何请求都必须经过身份验证,否则我的 Spring 应用程序将返回 401 响应。 不幸
我使用 spring-security 和 spring-security-oauth2 (JWT 访问 token )进行身份验证和授权。其想法是让所有请求通过,但能够区分经过身份验证的用户和未经身
在下面的代码中,不同的链式方法有什么作用? PUBLIC_URL 是一个包含公共(public) URL 的字符串数组。 protected void configure(HttpSecurity h
这两种不同的安全方法有什么区别?第一个依赖于配置 Spring Security 中的 HttpSecurity 对象。 。第二个依赖于将 @PreAuthorize("isAuthenticated
我正在尝试做一个例子 here link我消除了所有可能的错误,但保留了一个: 错误: org.springframework.beans.factory.BeanCreationException:
我是一名优秀的程序员,十分优秀!