spring-security 在Docker上运行时忽略Spring Security配置

ylamdve6  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(144)

我把我的简单的spring Boot 应用程序停靠在一起,然后我通过addind一个repo开始,检查连接是否工作(它确实工作了),以及一个简单的控制器用于一个简单的模型。还添加了一个控制器用于健康检查。我通过一个配置允许所有操作,但每次我试图访问它时,它都会将我重定向到localhost:8080/login。这是为什么?
此外,如果我运行这个项目,因为它是(而不是作为一个docker图像),它的工作。
我的配置(我使用此配置是因为WebSecurityConfigurerAdapter似乎已弃用):

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests((authz) -> authz
                        .anyRequest().permitAll()
                )
                .httpBasic(withDefaults());
        return http.build();
    }
}

application.yml:

spring:
  datasource:
    url: ${SPRING_DATASOURCE_URL}
    username: ${SPRING_DATASOURCE_USERNAME}
    password: ${SPRING_DATASOURCE_PASSWORD}
  jpa:
    hibernate:
      ddl-auto: none

docker-compose.yml

version: '2'

services:
  app:
    image: spring-backend
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/local_db
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=postgres
      - SPRING_JPA_HIBERNATE_DDL_AUTO=none
      - JAR_FILE=./build/libs/*.jar

  db:
    image: 'postgres:13.1-alpine'
    container_name: local_db
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=local_db

停靠文件:

FROM openjdk:11-jre
ARG JAR_FILE=./build/libs/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]

谢谢你!

bqjvbblv

bqjvbblv1#

您应该禁用httpBasic。
httpBasic.withDefaults()
激活Spring安全装置。
请参阅:
HttpBasicConfigurer

相关问题