inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션

본인계좌목록보기 컨트롤러 만들기

안녕하세요 인증이 필요한 url을 위하여 /s를 붙이는것에 대해 질문있습니다.

161

qheogus55

작성한 질문수 42

0

안녕하세요 인증이 필요한 url을 위하여 /s를 붙이는것에 대해 질문있습니다.
실무에서도 url분리를 위해 /s만 붙이기도 하나요?
아니라면 url 설계를 어떤식으로 해야할지 팁을 알고싶습니당.

spring-boot junit 소프트웨어-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
qheogus55님, 질문하신 URL 설계에 대해 인증이 필요한 URL을 구분하는 방법으로 ‘/s’를 붙이는 관행에 대해 직접적인 언급은 없습니다. 다만, URL 설계는 애플리케이션의 보안, 구조, 그리고 유지보수성을 고려하여 결정됩니다. 구체적으로 인증이 필요한 페이지를 구분하기 위한 일반적인 전략은 다음과 같습니다:

  1. 미들웨어 또는 인터셉터 사용: 요청을 처리하기 전에 인증 여부를 체크하여 인증되지 않은 요청은 로그인 페이지로 리다이렉트하거나 적절한 에러 메시지를 반환합니다.
  2. URL 네임스페이스: 인증이 필요한 리소스와 그렇지 않은 리소스를 명확하게 구분하기 위해 경로의 첫 부분에서 /auth, /secure 등의 네임스페이스를 사용할 수 있습니다.
  3. 문서화와 규칙 설정: 팀 내에서 URL 설계에 대한 명확한 가이드라인을 문서화하고, 이를 일관성 있게 따르는 것이 중요합니다.

Spring Boot와 Spring Security를 사용할 경우, @WithMockUser를 이용한 테스트 방법으로 인증이 필요한 URL에 접근하는 방법을 테스트할 수 있습니다. 예를 들어,

Java:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;

@WebMvcTest(UserController.class)
class MySecurityTests {

@Autowired
private MockMvc mvc;

@Test
@WithMockUser(roles = "ADMIN")
void requestProtectedUrlWithUser() throws Exception {
this.mvc.perform(get("/"));
}

}

Kotlin:

import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.security.test.context.support.WithMockUser
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders

@WebMvcTest(UserController::class)
class MySecurityTests(@Autowired val mvc: MockMvc) {

@Test
@WithMockUser(roles = ["ADMIN"])
fun requestProtectedUrlWithUser() {
mvc.perform(MockMvcRequestBuilders.get("/"))
}

}

위의 예제들처럼 테스트 환경에서 Spring Security의 @WithMockUser를 사용하여 다양한 인증 시나리오를 구현하고 검증할 수 있습니다.

마지막으로 인증이 필요한 URL 설계에 대한 구체적인 전략은 애플리케이션의 요구사항과 보안 정책에 따라 달라질 수 있으므로, 팀과 함께 가장 적합한 방식을 찾는 것이 좋습니다.

요청/응답 DTO 관련 문의

0

170

2

validation aop사용에 대해서 질문있습니다.

0

245

2

Dummy 클래스 위치에 대한 질문

0

293

2

테스트 방식에 관해서 질문이 있어요

0

292

2

스프링 버전업일 경우에는 Pointcut @PostMapping 조건이 달라질까요?

1

434

1

equals와 longValue 관련 질문드립니다

0

329

1

계좌번호를 Long 타입으로 하는 이유가 무엇일까요?!

0

499

2

[정보공유] Hibernate 로그 작동 안하시는 분들!!

3

346

0

UserControllerTest 테스트 실패 문의

0

318

1

스프링 시큐리티 6.2 버전 이후로 apply() 메서드를 이용한 JwtAuthenticationFilter 가 등록이 안됩니다.

2

1107

1

import 오류

0

427

3

spring initializer gradle 에서 3.x.x 대 밖에 없어요. 2.x.x는 보이지 않는데 어떡하져

0

438

2

안녕하세요 로그엔 성공적으로 들어온것같습니다..

0

237

1

JwtAuthorizationfilter test mvc.performget 관련 질문입니다!

0

287

1

JwtAuthorizationfilter test mvc.performget 부

0

226

1

longValue() 질문

0

228

1

jwt 인가필터 규현및 등록

0

334

1

스프링부트 3버전

1

334

1

권한처리를 위한 세션강제주입

0

418

1

JwtVO 를 인터페이스로 만든 이유

0

359

1

계좌 조회 질문드립니다

0

229

1

DummyObject 에 대하여

0

308

2

DTO를 이너클래스로 계속추가하는 이유

0

695

2

Builder 사용 궁금

0

404

1