java Sping Boot 应用程序容器化,jib不提供静态内容

mnemlml8  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(119)

我有一个混合代码容器,包含:

  • java spring Boot 应用程序(后端)
  • 一个vue.js应用(前端)

容器正在使用jib构建-"静态“内容与/app/resources/static目录中的gradle复制作业一起部署。下面是布局:

后端使用spring security进行保护。
前端被排除在Spring安全链之外:

启动容器并尝试访问index.html会出现401“Unauthorized”:

我已经尝试了不同的事情(改变静态路径,修改安全链,...),但我总是得到相同的结果。我有点迷路了,请求指导:)
问候

yx2lnoni

yx2lnoni1#

我认为这里的关键是.requestMatchers(...)中指定的路径指的是HTTP请求的路径,而不是文件系统上的路径。
您会注意到,浏览器显示的请求是发往/index.html的,这在webSecurityCustomizer bean的忽略请求匹配器列表中没有指定。This answer from Andy Wilkinson更详细。
修改bean以:

@Bean
WebSecurityCustomizer webSecurityCustomizer() {
  return (web) -> web.ignoring().requestMatchers("/index.html", "/js/**", "/css/**", "/images/**", "/actuator/**");
}

应该能解决问题
在本地开发时,您可能还希望将Jib从等式中删除,并尝试使用mvn spring-boot:run./gradlew bootRun运行应用程序。然后,一旦事情正常工作,尝试对Jib构建的Docker镜像做同样的事情。

相关问题