분류 전체보기
-
Refresh Token 으로 자동 로그인 구현하기 (2)Diary/우아한테크코스 2022. 8. 8. 00:17
Refresh Token 으로 자동 로그인 구현하기 Refresh Token 으로 자동 로그인 구현하기 우테코 내에서 팀 프로젝트로 속닥속닥 이라는 익명 커뮤니티를 개발하고 있다. 현재 인증/인가를 JWT를 이용해 구현했는데, 토큰 만료 시간이 지났을 경우 로그인이 풀리는 문제가 있다. 토큰 easthshin.tistory.com Refresh token 저장소에는 어떤 정보를 넣을까? refresh token에는 access token과 달리 그 자체로는 회원의 정보를 담고있지 않고, 만료 기한만 갖고 있도록 하였다. 이는 만료 기한이 긴 refresh token이 탈취 되더라도 그 자체로는 어떠한 정보도 얻을수 없기 위함이다. 토큰 자체로는 만료 기한 외의 정보를 가지고 있지 않기 때문에 해당 멤버의..
-
Refresh Token 으로 자동 로그인 구현하기 (1)Diary/우아한테크코스 2022. 7. 29. 09:59
우테코 내에서 팀 프로젝트로 속닥속닥 이라는 익명 커뮤니티를 개발하고 있다. 현재 인증/인가를 JWT를 이용해 구현했는데, 토큰 만료 시간이 지났을 경우 로그인이 풀리는 문제가 있다. 토큰 만료로 갑작스레 로그인이 풀린다면 사용자는 불편을 겪을 것이다. 예를 들어, 속닥속닥 사용자가 게시판에 글을 열심히 쓰고, 작성 버튼을 눌러 글 작성을 완료하려 한다. 하지만, 작성하는 도중에 토큰이 만료되었고 글 작성 버튼을 누르는 순간 로그인 화면으로 돌아가 하던 작업을 잃게 된다. 이런 상황을 방지하기 위해 토큰이 만료된다면 자동으로 다시 발급해주어 로그인이 풀리지 않게 구현하려 한다. 이를 위해, Refresh Token을 이용하면 된다. 자동로그인 동작 시나리오 1. 로그인하면 access token과 ref..
-
@Transactional의 롤백Programming/Spring 2022. 5. 18. 19:37
@Transactional 은 메서드 단위의 비즈니스 로직에서 쿼리가 실행된 뒤 예외가 발생했을 때 롤백 해주는 역할을 수행한다. RuntimeException을 상속한 예외에 대해서 롤백을 해준다는 배경지식만 있던 터라 미션에서 사용하고 있는 JdbcTemplate 은 어떻게 롤백이 진행되는 것인지 궁금하게 되었다. @Transactional 에서의 JdbcTemplate 쿼리 실행은 어떻게 롤백되지? @Transactional 은 기본적으로 rollbackFor 의 옵션이 RuntimeException.class 와 Error.class 로 설정 되어있다. JdbcTemplate 에서 예외가 터지면 SQLException 이 발생하는 줄 알았지만, JdbcTemplate의 쿼리 실행 메서드를 들어가보..
-
@Configuration이 붙지 않은 클래스의 메서드에 @Bean을 붙이면 어떻게 될까?Programming/Spring 2022. 5. 18. 14:40
Spring에서 Container에 Bean을 등록하는 방법중 하나로 다음과 같이 Java Config 을 이용하는 방법이 있다. @Configuration public class AuthenticationPrincipalConfig { @Bean public AuthService authService() { return new AuthService(); } } @Configure 은 해당 클래스가 빈 정의를 위한 목적이라는 것을 표시해주는 목적으로 사용된다. 그런데, 다음과 같이 @Configuration 없이 @Bean 만 존재한다면 어떻게 될까? public class AuthenticationPrincipalConfig { @Bean public AuthService authService() { ..
-
DI(Dependency Injection)의 종류와 장단점Programming/Spring 2022. 4. 26. 01:01
필드 주입 장점 의존성 주입하기가 쉬움 단점 외부에서 접근이 불가능하기 때문에 테스트시 객체를 수정할 수 없음 final 키워드를 붙이기 못하기 때문에 객체의 불변을 보장하지 못함 DI 프레임워크가 존재해야만 가능한 방식이기 때문에, 프레임워크에 의존적임 SRP 위반 Setter 주입 장점 의존성이 선택적으로 필요한 경우에 사용 가능 의존성이 변경될 가능성이 있는 경우에 사용 가능 단점 final 키워드를 붙이기 못하기 때문에 객체의 불변을 보장하지 못함 구현체를 주입해주지 않아도 생성이 가능해지는데, 이때 메서드를 호출하면 NullPointerException이 발생하게 됨. 즉, 주입이 필요한 객체가 주입되지 않아도 객체를 생성할 수 있게 된다는 것이 문제 생성자 주입 장점 의존 객체 주입 없이는 객..
-
불변 객체는 어떻게 만드는가?Programming/Java 2022. 3. 4. 03:23
불변 객체란? 불변 객체는 생성된 시점 이후로 상태가 변하지 않는 객체를 뜻한다. 예를 들어, 다음과 같이 Lottery 클래스가 있다고 하자. public class Lottery { private Set numbers; public Lottery(final Set numbers) { this.numbers = numbers; } } 위와 같은 Lottery 클래스를 클라이언트 코드에서 객체 생성한다고 하면, Lottery의 인스턴스 필드인 numbers의 상태가 주입되게 된다. 그런데, 불변 객체는 이렇게 생성된 시점에서 주입된 상태가 변하지 않음을 보장하고 유지되는 것을 말한다. 왜 불변 객체를 만들어야 하는가? 불변 객체를 보장함으로써 얻는 이점은 다양하다. 불변 객체는 Thread-Safety를..
-
String.matches() VS Pattern.compile()Programming/Java 2022. 2. 18. 02:03
문제 상황 정규표현식을 사용하여 문자열을 검증할 때, 가장 간단한 방법은 String.matches()를 사용하는 것이다. 다음은 입력 받은 문자열이 숫자만으로 이루어져있는지 검증하는 코드이다. private static boolean isNumber(String line) { return line.matches("^[0-9]+$"); } 그런데, 이 방법은 여러번 반복해서 해당 코드가 실행될 경우 성능 상 이슈가 있다! Pattern 클래스는 객체 생성에 대한 비용이 비싼데, String.matches() 를 사용할 때 마다 Pattern 클래스의 인스턴스를 생성하기 때문이다. public boolean matches(String regex) { return Pattern.matches(regex, t..
-
우아한테크코스 4기 지원 후기Diary/Review 2022. 1. 1. 22:34
우테코는 우아한형제들에서 주관하는 무료 교육 프로그램이다. 우테코에 대해서는 우아한Tech 유튜브 채널과 우아한형제들 기술블로그를 통해 알게 되었고, 당장 실무에 투입될 수 있을만한 개발자를 양성하는 것이 목적이라는 점과 실제로 수료생들의 결과가 좋았다는 점에 끌려 지원을 하게 되었다. 개발바닥이라는 유튜브 채널에서 우아한 형제들의 개발 팀장이자 Spring 1타 강사 김영한 님의 인터뷰를 보았을 때, 우테코 수료생을 보면 팀에 정말 빨리 기여를 해서 놀랍다는 말을 듣고 더더욱 경험해보고 싶은 교육 프로그램이 되었다. 캡스톤 디자인 프로젝트 때문에 긴 선발 과정을 소화해낼 수 있을까 걱정했지만, 일단 지원하고 미래의 내가 알아서 하겠지 라는 마인드로 자소서를 쓰기 시작했다. 선발 과정 우테코는 1차에서 ..