caffeine-library / pro-spring-5

🌱 전문가를 위한 스프링5를 읽는 스터디
5 stars 0 forks source link

[keyword] 16장 스프링 웹 애플리케이션 키워드 정리 (2) #94

Closed binchoo closed 2 years ago

binchoo commented 2 years ago

주제

16장 스프링 웹 애플리케이션을 읽고 중요✨ 하다고 생각하는 키워드와 선택한 이유에 대해서 코멘트로 달아주세요.

93

binchoo commented 2 years ago

특정 URL 파라미터를 지닐 때 핸들러 매핑

@RequestMapping(value = "/{id}", params = "form", method=RequestMethod.POST)

핸들링 전 엔터티 유효성 검사 + 바인딩 결과 조회하는 법

@RequestMapping(method=RequestMethod.POST)
public String create(@Valid Singer singer, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
    ...
  }
  ...
}

뷰의 요청 폼이 엔터티 객체에 바로 매핑되도록 구현하는 법

핸들링 시 로케일 값 주입

@RequestMapping(method=RequestMethod.POST)
public String create(@Valid Singer singer, BindingResult bindingResult, Locale loc) {
  ...
}

리다이렉트 하는 법 + 리다이렉트 뷰를 위한 어트리뷰트 제공 방법

@RequestMapping(method=RequestMethod.POST)
public String create(@Valid Singer singer, BindingResult bindingResult, Locale loc, RedirectAttributes ra) {
  ...
  RedirectView rv = new RedirectView("/singers/");
  ra.addFlashAttribute("message", new Message("success"));
  return rv;
}

업로드된 파일을 핸들러에 주입하고 DB에 저장하는 법

HTTP 요청 바디에 업로드 된 파일 바이너리가 담겨 있는 경우, 이것을 MVC가 Part 객체로 포장하여 컨트롤러에게 주입 해 준다. Part 객체에서 InputStream 을 획득할 수 있으므로 여기서 다시 바이너리를 획득하여 DB의 BLOB에 저장할 수 있다.

@RequestMapping(method=RequestMethod.POST)
public String create(@Valid Singer singer, BindingResult bindingResult, Locale loc, RedirectAttributes ra, Part file) {
  ...
  byte[] fileContent = null;
  try {
    InputStream inputStream = file.getInputStream();
    fileContent = IOUtils.toByteArray(inputStream);
  } catch {
    ...
  }
  singer.setPhoto(fileContent);
  singerService.save(singer);
  ...
}

인가와 인증 용어 구분

Authentication, 인증

인증이란, 유저의 신분을 확인하는 것이다. 자신이 A라고 주장하는 자가 정말로 A인지 확인한다.

현실 세계의 인증 → 주민등록증 사진과 당사자 얼굴을 대조하는 과정 웹에서의 인증은 → 유저에게 아이디와 비밀번호 쌍을 요구한다. 아이디는 ''자신이 A라고 주장''하는 것과 같으며, 비밀번호는 '정말로 자신이 A임을 증명'하는 것이다.

Authorization, 인가

인가란, 어떤 사람이 특정 행동을 해도 된다고 인정해 준 것이다. 인가 절차는 보통 이렇다.

경찰이 과속 위반 차량을 세우고, 운전자에게 운전 면혀증을 요구했다. 경찰은 운전자가 면허증의 사람과 동일함을 확인했다. (인증 절차) 경찰은 운전 면허의 진위 여부, 만료일 등을 확인했다. 면허증을 살펴보니 이 사람은 운전할 권한이 있는 사람이 맞았다. (인가 절차)

뷰에서 시큐리티 태그 적용