저번 포스팅에서, 함께 결제시 모든 참가자가 실시간으로 메뉴를 선택/취소 할 수 있어야 했습니다. 실시간으로 빠른 처리를 위해 Redis에 객체를 저장해두고 수정/조회 작업을 수행하였는데, 거의 동시에 메뉴를 선택하는 경우에 앞 사람이 선택한 메뉴에 대한 정보가 누락되는 현상이 발생하였습니다. (1번 유저가 짜장면을 선택함과 거의 동시에 2번 유저가 짬뽕을 선택하면, Redis에 put 메서드로 저장을 하기 때문에 1번 유저가 선택한 짜장면에 대한 정보는 누락) 또한, 참가자 수에 제한을 두어 4명까지만 참가가 가능해야 하는데 더 많은 유저가 참여하는 상황도 생겼습니다. Redis에 OrderRoom 객체를 저장하기 이전에 Mysql에 저장했을 때는 단순하게 비관적 락을 걸어서 한 트랜잭션이 접근중일때는..
Spring
안녕하세요. 이번 포스팅에서는 최근 레거시 스프링 프로젝트를 이용하여 진행했던 '함께 결제' 프로젝트에서 사용한 웹소켓과 STOMP에 대해 포스팅 해보려고 합니다. ❗❗❗❗❗ 스프링 부트가 아닌, 스프링 레거시 프레임워크만 사용한 프로젝트 입니다 ❗❗❗❗❗스프링 버전 : 5.3.37스프링 시큐리티 : 5.8.13Tomcat : 9.0.912Build : Gradle War 레거시 스프링이긴 하지만, 현재 포스팅하는 부분에 관해서는 스프링 부트와 크게 다르다고 느끼진 않았습니다. 지피티를 잘 활용하여 참고하신다면 부트에도 금방 적용 가능합니다. 함께 결제 프로젝트에 대해 간략하게 설명 드리면, 결제 방에 입장한 유저들은 자신이 결제할 메뉴를 선택하여 결제 후 정산이 아닌, 결제 시점에 따로 결제하는 프로젝..
이전 포스팅2024.06.09 - [Spring] - [Spring] Security,Jwt,쿠키,OAuth2를 이용한 로그인과 인증처리 (feat. Front End) [3] - Jwt와 쿠키를 사용한 인증 구현 + OAuth2 간편 로그인 [Spring] Security,Jwt,쿠키,OAuth2를 이용한 로그인과 인증처리 (feat. Front End) [3] - Jwt와 쿠키를 사용한이전 포스팅2024.05.25 - [Spring] - [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (feat. Front End) [2] - Jwt와 쿠키를 사용한 인증 [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (100cblog.tistory.com..
이전 포스팅2024.05.25 - [Spring] - [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (feat. Front End) [2] - Jwt와 쿠키를 사용한 인증 [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (feat. Front End) [2] - Jwt와 쿠키를 사용한2024.05.19 - [Spring] - [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (feat. Front End) [1] - 쿠키와 세션이란? [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (feat. Front End) [1] - 쿠100cblog.tistory.com이전 포스팅에서, 어떻게..
2024.05.19 - [Spring] - [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (feat. Front End) [1] - 쿠키와 세션이란? [Spring] Security,Jwt 그리고 쿠키를 이용한 로그인과 인증처리 (feat. Front End) [1] - 쿠키와 세션이란?개요저는 이전까지 Spring Security을 사용하여 jwt로 인증을 진행하였습니다. Json 로그인이 성공하면 accessToken과 refreshToken을 프론트에 발급해 주었으며, 서버에 접근하기 위해서는 헤더에 토큰 정보100cblog.tistory.com 개요이전 포스팅에서는 쿠키와 세션에 대해 알아보는 시간을 가졌습니다.이번 포스팅에서는 저번에 알아본 쿠키와 세션, JWT등..
개요저는 이전까지 Spring Security을 사용하여 jwt로 인증을 진행하였습니다. Json 로그인이 성공하면 accessToken과 refreshToken을 프론트에 발급해 주었으며, 서버에 접근하기 위해서는 헤더에 토큰 정보를 담아 요청하면 인증이 성공하여 Api로 원하는 동작을 수행하도록 구현하였습니다. 헤더에 토큰값을 넣어 인증하는 가장 간단하고 직관적인 방식이지만, 이번에 쿠키와 세션에 대해 공부하고 프론트와 협업해보며, 보다 안전하고 효율적인 로그인 방식을 구성해보기로 하였습니다. 이번 글은 스프링 시큐리티와 jwt를 활용한 인증 로직이 모두 구현 되어 있다는 전제 하에, 프로젝트를 진행하며 프론트와 협업시 쿠키와 세션, jwt를 어떻게 적절히 활용하면 좋을지에 대해 작성한 글입니다. 만..
이번에는 로그인을 진행하기 위한 스프링 시큐리티에 대해 알아보는 시간을 가지려고 합니다. 다른 블로그나 자료를 참고하여 공부를 해보려고 합니다. 스프링 시큐리티(SpringSecurity) 스프링 시큐리티란? API가 실행될 때 마다 사용자를 인증해야 하는데, 그 인증을 구현해놓은 것이 스프링 시큐리티입니다. 스프링 시큐리티는 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크입니다. 즉 인증(Authenticate, 누구인가)과 인가(Authorize, 어떤것을 할 수 있는지)를 담당하는 프레임워크입니다. 스프링 시큐리티에서는 주로 서블릿 필터(filter)와 이들로 구성된 필터체인으로의 구성된 위임 모델을 사용합니다. 그리고 보안과 관련하여 체계적으로 많은 옵..
스프링 프로젝트를 하던 중, 엔티티 매니저가 무엇인지 궁금하여 찾아보다가 알게된 영속성 컨텍스트에 대해 공부해보려고 합니다. 출처는 아래에 기재하였습니다. 영속성 컨텍스트 EntityManagerFactory& EntityManager 새로운 고객의 요청이 올때마다 엔티티 매니저 팩토리는 엔티티 매니저를 생성합니다. 엔티티 매니저는 내부적으로 데이터베이스 커넥션을 사용하여 DB를 사용합니다. EntityManagerFactory 말 그대로 엔티티 매니저를 만드는 공장입니다. 엔티티 매니저 팩토리는 생성하는 비용이 커서 한 개만 만들어 애플리케이션 전체에서 공유합니다다. 여러 스레드가 동시에 접근해도 안전합니다. EntityManager EntityManager는 영속성 컨텍스트 내에서 Entity들을 관..