스프링부트 시작하기
SpringBoot [스프링부트] 시작하기(12) LeagueController, Interceptor, ControllerAdvice 만들기
SpringBoot [스프링부트] 시작하기(12) LeagueController, Interceptor, ControllerAdvice 만들기
2022.01.18TeamController, Interceptor, ControllerAdvice와 유사하므로 추가적인 설명은 생략하겠습니다. 1. LeagueController, LeagueAdvice @RestController @RequiredArgsConstructor @RequestMapping("/league") public class LeagueController { private final LeagueService leagueService; @GetMapping("/") public RestLeagueDto findByName(@RequestParam(name = "leagueName") String leagueName){ return leagueService.findLeagueByName(leagueNa..
SpringBoot [스프링부트] 시작하기(11) League 내부 로직 만들기
SpringBoot [스프링부트] 시작하기(11) League 내부 로직 만들기
2022.01.18Member와 Team을 만들었던 것과 비슷하므로 추가적인 개념이 있을 경우만 설명하겠습니다. LeagueHost == League의 요구사항과 같다고 볼 수 있습니다. LeagueHost는 League를 개최할 수 있습니다. LeagueHost는 League 참가를 희망한 팀의 리스트를 확인할 수 있으며 수락이 가능합니다. 1. LeagueService, LeagueServiceImpl 추가 public interface LeagueService { Long createLeague(LeagueDto leagueDto, Long userId); void acceptLeague(Long requestLeagueId); List findRequestList(Long leagueId); List findRes..
SpringBoot [스프링부트] 시작하기(10) TeamController, Interceptor, Advice만들기
SpringBoot [스프링부트] 시작하기(10) TeamController, Interceptor, Advice만들기
2022.01.17Member의 Interceptor에는 로그인과 권한만 일치한다면, 모든 요청을 통과시켰습니다. 하지만 안드로이드나, web페이지에서 요청을 할 수 있는 버튼만 제공하지 않는다면 안전할까요?? -> 정답은 아닙니다. 서버의 IP와 URI, 같은 권한을 가진 로그인 사용자가 접근한다면 다른 사용자의 DB를 이용할 수 있게 됩니다. 이러한 상황을 막기 위해 TeamInterceptor에는 검증하는 로직을 추가합니다. MemberInterceptor에도 마찬가지로 추가해야 합니다. 여러분이 실습할 수 있는 시간을 드리기 위해 추가하지는 않겠습니다. 1. TeamController, TeamControllerAdvice @RestController @RequiredArgsConstructor @RequestMa..
SpringBoot [스프링부트] 시작하기(9) Team 내부 로직 만들기
SpringBoot [스프링부트] 시작하기(9) Team 내부 로직 만들기
2022.01.17Member를 만들던 것과 비슷하므로 추가적인 개념이 있다면 그 구분에 대해서만 설명하겠습니다. TeamFounder = Team의 요구사항과 같다고 할 수 있습니다. TeamFounder는 하나의 Team만 만들 수 있습니다. TeamFounder는 Member가 신청한 리스트를 확인할 수 있으며 수락이 가능합니다. TeamFounder는 Team해체가 가능합니다. TeamFounder는 League 참가 신청을 할 수 있습니다. LeagueHost가 수락을 해야 League에 참가가 완료됩니다. 여러 리그에 신청이 가능하지만 한 League에만 참석이 가능합니다. 1. TeamService, TeamServiceImpl TeamRepository 추가 public interface TeamReposi..
SpringBoot [스프링부트] 시작하기(8) Interceptor 만들기
SpringBoot [스프링부트] 시작하기(8) Interceptor 만들기
2022.01.16앞서 만들었던 MemberController에 대한 로직들은 로그인이 없어도 호출이 가능했고, 비록 다른 사용자여도 로그인만 하여 세션이 있다면 다른 사용자의 정보를 이용할 수 있었습니다. 이러한 현상을 방지하기 위해 Interceptor를 만들도록 하겠습니다. Interceptor란? Controller의 Handler를 호출하기 전, 호출한 후를 가로채서 가공을 할 수 있는 것을 의미합니다. 기본적인 spring Interceptor의 흐름은 아래와 같습니다. 1. MemberInterceptor @Component @RequiredArgsConstructor public class MemberInterceptor implements HandlerInterceptor { private final Us..
SpringBoot [스프링부트] 시작하기(7) ArgumentResolver 만들기
SpringBoot [스프링부트] 시작하기(7) ArgumentResolver 만들기
2022.01.15전 시간에 Controller에서 Session을 가져오는 데 있어서 중복 코드가 있었습니다. 해당 코드를 ArgumentResolver로 해결해보겠습니다. ArgumentResolver란? 컨트롤러의 메소드의 인자로 사용자가 임의의 값을 전달하는 방법을 제공할 때 사용합니다. 저희가 활용할 부분은 세션에 저장되어 있는 것을 메소드의 파라미터로 넘겨주는 역할을 하게 됩니다. 1. argumentresolver 패키지 먼저 만듭니다. SessionConst와 SessionDto를 사용하므로 Dto에 있던 것을 옮겨줍니다. 2. ArgumentResolver에 사용될 LoginUser Annotation만들기 @Target(ElementType.PARAMETER) @Retention(RetentionPoli..