오늘은 코드카타 SQL 60번 문제를 풀고, 새로운 강의를 듣기 시작했다..
오늘은 1개의 SQL 문제를 풀었는데, 그냥 3개의 컬럼으로 그룹화를 하는 것이었다.
group by 정도야 이제는 쉽게 사용할 수 있다ㅎㅎ
오늘 사실 알고리즘 문제를 풀 시도는 했지만... 끝까지 풀지 못했다...
오늘은 늦게 합류를 해서 시간이 없었지만,, 내일은 오전에 시간을 좀 빼서 알고리즘 문제를 풀어야겠다..
오늘 푼 문제와 풀이는 깃허브를 통해 업로드해두었다.
GitHub 보러가기
이번 강의는 총 5주차로 구성되어 있는데, 오늘은 총 3개 주차의 강의를 들었다!
그 중 첫 번째는 JWT와 필터에 관한 것이었는데, 이 부분들은 스탠다드반 세션 때 진행해주셨었다.
그래서 다시 한번 간단히 개념을 정리하고 넘어갔다.
두 번째는 Spring Security에 관한 것이었다.
지난 과제 때, JWT를 Spring Security와 함께 사용한다는 이야기를 들었었다.
그때는 마감 기한이 많이 남지 않았기도 했고, Spring Security에 대해 잘 몰라서 처음부터 찾아봤어야 했기 때문에 다루지 않았었는데..
강의를 통해 개념과 실습을 함께 진행하니까 굉장히 쉽게 이해할 수 있었다.
Spring Security는 스프링 기반 애플리케이션의 인증과 인가를 담당하는 보안 프레임워크이다.
아직은 스프링 시큐리티가 익숙하지 않아 이해는 되지 않지만.. 스프링 시큐리티를 사용하면 인증 인가를 조금 더 간단하게 구현할 수 있게 된다고 한다.
이전까지는 필터를 사용해 로그인을 했는지 확인하거나 토큰이 유효한 것인지 확인하는 정도밖에 하지 못했는데,
스프링 시큐리티를 사용하면 사용자에게 Role, 역할을 부여하고, 그 역할에 맞는 동작만 할 수 있게 제한을 해줄 수 있다.
마지막으로 세 번째는 Interceptor와 AOP였는데,
필터와 인터셉터, AOP는 모두 반복적으로 등장하는 내용들을 처리하는 공통 관심사이다.
그런데, 각각 동작하는 위치가 다르기 때문에, 사용하려는 목적에 따라 선택해 사용하면 된다.
필터는 스프링 컨테이너가 실행되기 전부터 작동이 된다면,
인터셉터는 스프링 컨테이너가 실행되자마자, 즉 컨트롤러가 실행되기 전후로 작동한다.
그래서 컨트롤러에 닿기 전, 사용자가 접근 가능한 API를 입력했는지 확인하는 등의 작업을 할 수 있다.
그리고 AOP는 스프링 안의 메서드들을 실행하기 전후로 작동한다.
그래서 하나의 비즈니스 로직을 실행하는 데에 걸리는 시간을 측정하는 등의 작업을 할 수 있다.
프로젝트를 계속 하면서 인증과 인가인데, 왜 필터에서는 로그인을 했는지 확인하는 것만 할까 의문이 들었었다.
그런데 오늘 강의를 통해서 의문이 다 풀렸다ㅎㅎ
강의의 자세한 설명과 실습 내용은 노션에 정리해두었다.
Notion 확인하기
오늘은 오전에 일정이 있어서 오후에 늦게 합류했다.
그래서 코드카타도 많이 못하고.. 강의는 그래도 3주차까지는 들었지만, 아직 과제 내용이 무엇인지 이해도 못했다..
개인학습 주차가 다시 시작된만큼.. 내일부터 다시 열심히 해야겠다,,