728x90

Programming/Spring 86

Spring - 데이터베이스를 통한 토큰 검증 / 쿠키를 통한 인증 및 검증

1. 데이터베이스를 통한 토큰 검증 - Test 코드 @Test @DisplayName("로그인 후 권한이 필요한 페이지 접속한다. /test2") void test4() throws Exception { //given Member member = Member.builder() .name("백인수") .email("saymay10@naver.com") .password("1234") .build(); Session session = member.addSession(); //addSeeion()을 하게 되면 Session 객체가 생성되고, Session 객체가 생성되는 것만으로도 //accessToken 필드에 값이 들어간다. memberRepository.save(member); //expected mo..

Programming/Spring 2023.10.06

Spring - 예외처리 복습!!!!!!!

- ExceptionController.java @Slf4j @ControllerAdvice public class ExceptionController { @ResponseBody @ExceptionHandler(IslogException.class) public ResponseEntity islogException(IslogException e) { int statusCode = e.getStatuscode(); ErrorResponse body = ErrorResponse.builder() .code(String.valueOf(statusCode))//애초에 받아올 때 String으로 받아오던가 반환값을 뭐 알아서 변경하면 된다. .message(e.getMessage()) .validation(e...

Programming/Spring 2023.10.05

Spring - API 인증 (http, 고정 인증 로그인 구현)

- Resolver를 사용 할 때 파라미터로 인증 토큰을 받게 되면 값이 중복 될 수 있기 때문에 header를 통해 받는 것이 좋다. ....... @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { String accessToken = webRequest.getHeader("Authorization"); if (accessToken == null || accessToken.equals("")) { throw new Unau..

Programming/Spring 2023.10.04

Spring - API 인증 (ArgumentResolver)

- ArgumentResolver란 Spring MVC에서 사용되는 인터페이스로, 컨트롤러 메서드의 매개변수를 해석하고 해당 매개변수에 값을 제공하는 역할을 한다. 이를 통해 컨트롤러 메서드에서 다양한 매개변수 타입을 처리하고 커스텀한 바인딩 로직을 구현할 수 있다. - HandlerMethodArgumentResolver 인터페에스를 상속 받고 다음과 같은 메서드를 정의한다. 1. supportsParameter(MethodParameter parameter) : Resolver가 특정 매개변수를 지원하는지 여부를 판단하는 데 사용된다. MethodParameter 객체를 인자로 받고, 지원하는 매개변수인 경우 true를 반환하고, 그렇지 않은 경우, false를 반환해야 한다. 2. resolveAr..

Programming/Spring 2023.10.04

Spring - API 인증 (파라미터, Header, Interceptor)

- API 인증은 요청이 들어올 때 인증된 요청인가 허용된 사용자인가 확인 후 수행하기 위해서 사용한다. - Get Parameter 방식 @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request, @RequestParam String authorization) { if(authorization.equals("bis")){ request.validate(); postService.write(request); } } 1. RequestParam 방식을 이용하여 쿼리 파라미터로 넘어오는 값을 비교하는 방법이 있다. - test 코드 //when mockMvc.perform(MockMvcRequestBuilders.post("..

Programming/Spring 2023.10.04

Spring - 문서화 (Rest Docs 문서)

- Rest Docs는 Spring MVC를 사용하는 REST API를 문서화하는데 도움을 주는 프로젝트이다. - Restful 서비스를 문서화하는 것은 주로 해당 리소스를 설명하는 것이다. HTTP 요청과 생성되는 HTTP 응답의 세부정도이다. - 빌드 구성 plugins {// 1. id "org.asciidoctor.jvm.convert" version "3.3.2" } configurations { asciidoctorExt// 2. } dependencies { asciidoctorExt 'org.springframework.restdocs: spring-restdocs-asciidoctor:{project-version}'// 3. testImplementation 'org.springfram..

Programming/Spring 2023.09.08

Spring - 예외 처리

- 기존의 Controller에서 발생하는 예외들은 @ControllerAdvice 어노테이션이 붙은 클래스에서 처리가 가능하다. - @ControllerAdvice는 전역 예외 처리가 가능하고 예외가 발생했을 때 처리할 수 있는 공통 로직을 제공한다. - PostCreate.java ..... @NotBlank(message = "title을 입력해주세요") private String title; @NotBlank(message = "content를 입력해주세요") private String content; ..... - Post 엔티티에 대한 DTO에 해당하는 PostCreate는 @NotBlank 어노테이션으로 인해 스프링이 제공하는 기본적인 검증이 이루어 진다. - 하지만 기본적으로 제공하는 검증..

Programming/Spring 2023.09.06

Spring, Java - Builder 패턴 분석

- 결론부터 얘기하자면 Builder 패턴을 사용하게 되면, build() 메서드가 호출되기 전까지는 builder 클래스 안에 데이터가 저장되어 있다가 build() 메서드가 실행된 후에 해당 객체 필드에 값이 들어가게 된다. - 아래 예를 통해 데이터 주입 과정을 알아 볼 것이다. 1. Post, PostEditor라는 엔티티가 생성되어 있다. 2. Post에는 아래와 같이 toEditor(), edti() 메서드가 작성되어 있다. public PostEditor.PostEditorBuilder toEditor() { return PostEditor.builder() .title(title) .content(content); } public void edit(PostEditor postEditor) ..

Programming/Spring 2023.09.06

Spring - 게시글 수정 / 삭제

- 게시글을 수정 및 삭제하는 방법에 대해 알아 볼 것이다. - 게시글 수정 - PostEdit.java @Getter @Setter @ToString public class PostEdit { @NotBlank(message = "title을 입력해주세요") private String title; @NotBlank(message = "content를 입력해주세요") private String content; @Builder public PostEdit(String title, String content) { this.title = title; this.content = content; } } - PostService.java @Transactional public void edit(Long id, Po..

Programming/Spring 2023.09.05
728x90