본문 바로가기
728x90

스프링22

[스프링] 스케줄러 cron 사용하기 새로 지원한 회사에서 내준 과제를 진행하면서 '만료 기간'에 대한 요구사항을 만났습니다. 따라서, db에 저장된 데이터의 만료 시간이 되면 상태값을 바꿔줘야 했습니다. 이런 요구사항을 해결하기 위해 직접 상태를 바꿔줄 수는 없었고 '스케줄러'를 사용하기로 결심을 했습니다. 저는 application의 main 메소드가 있는 클래스에 @EnableScheduling을 추가했습니다. 위의 어노테이션을 달아줘야 스프링부트가 @Scheduler를 인지할 수 있다고 합니다. @Scheduler은 제가 원하는 클래스안에 메소드에 붙여줍니다. 우선, 간단하게 코드로 만나보겠습니다. @SpringBootApplication @EnableScheduling // 추가된 어노테이션 public class SpringStu.. 2023. 7. 26.
[스프링 시큐리티] 스프링 부트 3.X 이상의 시큐리티 안녕하세요. 스프링 부트가 3.x 이상이 되면서 스프링 시큐리티의 변화에 대해서 포스팅해보려고 합니다. 우선, 간략하게 SecurityConfig 클래스를 만들 때 상속을 받고 @Overiding을 통해 소스코드를 구현했었습니다. 하지만, 버전이 달라지면서 따로 상속을 받지 않고 @Bean으로 등록해서 사용하면 됩니다. 코드로 정리해보겠습니다. @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public InMemoryUserDetailsManager userDetailsManager() { UserDetails userRole = User.builder().username("user") .password(passwordEnco.. 2023. 6. 1.
[스프링 시큐리티]JWT 토큰안에 내가 원하는 값 넣기 오늘은 간단하게 JWT 토큰 안에 원하는 값을 넣어보겠습니다. 코드는 앞에서 만들었던 custom한 Authentication에서 이어집니다. JWT 토큰안에 값을 추가하고 싶은 배경 로그인 시 내려주는 accessToken값에는 로그인할 때 로그인 id만 내려가고 있었습니다. 이로 인해, 프론트에서 지금 로그인한 계정의 정보가 부족하다는 요청이 있었습니다. 프론트의 요청을 충족시켜 주기 위해 accessToken에 값을 추가해서 내리기로 결정했습니다. 제가 사용한 방법은 Jwts.builder()에 claim입니다. claim은 key와 value형태로 데이터를 추가할 수 있습니다. ex) claim("key", object) public interface JwtBuilder extends Claims.. 2023. 4. 10.
[스프링 시큐리티] redis를 이용한 jwt 로그아웃 만들기 오늘은 redis를 이용해서 jwt 로그아웃 기능을 포스팅 해보겠습니다. 우선, 간단하게 redis를 왜 이용해야 하는지 고민해보겠습니다. 왜 redis를 사용할까? 바로 로그아웃을 요청한 access token이 만료될 때까지 access token으로 오는 요청을 막기 위해서입니다. 아직 좀 부족하죠?? 그래서 왜 redis인데? 그렇다면 access token이 만료가 될 때까지 어딘가에 저장이 되어있어야 하지 않을까요? 음... access token이 어딘가에 저장되고 그 어딘가에 저장이 되어 있으면 api 요청을 못하게 하면 되지 않을까요? 음... 그러면 어딘가에 저장을 하는데... 일정 시간(만료시간)이 지나고 저절로 삭제가 될 수는 없을까? 위의 모든 의문을 해결해주는 것이 레디스 였습니.. 2023. 1. 31.
[스프링 시큐리티] custom한 authentication받기 오늘은 jwt 토큰을 이용해서 로그인/로그아웃을 구현하던 중 만난 어려움에 대해서 포스팅 해보려고 합니다. 어려움을 만날 때까지의 과정 - 구글링을 통해서 로그인 기능 구현 - 토큰 값 없이 API요청을 할 경우 401에러와 권한이 없다는 메세지 출력 이후 로그아웃 기능을 구현하기 위해 controller로 넘어온 데이터를 확인하던 중 내가 커스텀한 데이터로 Authentication이 왔으면 좋겠다는 생각이 들었습니다. 수 많은 구글링을 해본 결과 방법은 3가지가 있습니다. 1. Authentication의 .getName()을 해서 데이터베이스에서 데이터를 조회하는 것입니다. @GetMapping("test") public ResponseEntity test( Authentication authent.. 2023. 1. 25.
스프링 이메일 인증 이번 포스팅에서는 회원가입때 사용하기 위한 이메일 인증에 대해서 알아보겠습니다. 우선 결과를 먼저 보여드리겠습니다. 포스트맨을 이용해 emailCheck url에 email을 작성한 뒤 보냅니다. 밑의 사진은 저의 이메일주소로 온 인증번호입니다. 메일로 온 인증번호와 포스트맨의 리턴된 값이 같은 것을 알 수 있습니다. 이메일 인증을 구현하기 위해서 email 라이브러리를 먼저 가져와야 합니다. build.gradle에 위의 문장을 추가합니다. https://mvnrepository.com/repos/central 이곳에서 spring-boot-starter-mail을 검색한뒤 가장 많은 사람이 사용한 버젼을 가져오면 됩니다. 이제 추가적으로 .yml파일에 메일에 관련된 내용을 추가해야합니다. .yml 파.. 2021. 11. 12.
728x90