Spring 安全忽略上下文路径
Spring Security ignoring context-path
控制器
@GetMapping("/api/data")
String response(){
}
application.properties
server.servlet.context-path=/v1
Spring 安全
http.authorizeRequests().anyMatcher("/v1/**").authenicated()
这里没有进行身份验证。我相信,spring-security 忽略了在 application.properties 中配置的上下文路径 。为什么 spring-security 会忽略上下文路径。如何解决这个问题?
对于上图,我预计会出现 401,因为 v1/** 应该已获得授权
这工作正常,
http.authorizeRequests().anyMatcher("/**").authenicated()
打开 Spring 安全的调试,然后你就会明白发生了什么。
@EnableWebSecurity(debug = true)
当,
server.servlet.context-path=/v1
生成的请求:
Request received for GET '/api/data':
servletPath:/api/data
pathInfo:null
当,
spring.mvc.servlet.path=/v1
生成的请求:
Request received for GET '/v1/api/data':
servletPath:/v1
pathInfo:/api/data
使用 servlet-path 来实现你想要实现的...
控制器
@GetMapping("/api/data")
String response(){
}
application.properties
server.servlet.context-path=/v1
Spring 安全
http.authorizeRequests().anyMatcher("/v1/**").authenicated()
这里没有进行身份验证。我相信,spring-security 忽略了在 application.properties 中配置的上下文路径 。为什么 spring-security 会忽略上下文路径。如何解决这个问题?
对于上图,我预计会出现 401,因为 v1/** 应该已获得授权
这工作正常,
http.authorizeRequests().anyMatcher("/**").authenicated()
打开 Spring 安全的调试,然后你就会明白发生了什么。
@EnableWebSecurity(debug = true)
当,
server.servlet.context-path=/v1
生成的请求:
Request received for GET '/api/data':
servletPath:/api/data
pathInfo:null
当,
spring.mvc.servlet.path=/v1
生成的请求:
Request received for GET '/v1/api/data':
servletPath:/v1
pathInfo:/api/data
使用 servlet-path 来实现你想要实现的...