개인 프로젝트
-
jwt 로그아웃..?개인 프로젝트/3. simple board 02 2024. 1. 4. 22:57
로그아웃이 정의되지 않은 토큰이었다 몰랐다 (동공지진) refresh 토큰을 사용할 때도 레디스같은 NoSQL 저장소를 사용하지만 로그아웃을 위해서도 별도의 저장소로 관리한다고 한다 (동공지진) 로그인/로그아웃이 생각 외로 복병이 되었다 ㄷㄷ 만료시간을 변경하는게 가능할 줄 알았는데 불가능한것이엇닫ㄷㄷ.. 참고 할 블로그 https://velog.io/@joonghyun/SpringBoot-Jwt를-이용한-로그아웃 SpringBoot + JWT를 이용한 로그아웃 Jwt를 이용한 로그인 기능은 Access 토큰과 Refresh 토큰을 이용하여 구현에 성공했다. 그런데 이 Jwt를 삭제할 수 있는 방식이 없는 것 같다...(로그아웃이 생각보다 어려웠군요..) 그렇다면 Jwt를 이용 velog.io https..
-
security exception을 rest advice를 적용한 것 처럼 출력하기개인 프로젝트/3. simple board 02 2024. 1. 4. 15:35
참고 : https://velog.io/@dltkdgns3435/%EC%8A%A4%ED%94%84%EB%A7%81%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-JWT-%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC 스프링시큐리티 JWT 예외처리 🎈시작하며 > 이 포스트는 정답이 아니며, 주관적인 생각에 의해 작성한 글입니다. 해당 포스트를 보고 제가 잘못 알고 있는 점이나, 지적사항이 있으시면 댓글로 남겨주시면 정말 감사하겠습 velog.io 시큐리티는 FilterChain을 사용하기 때문에, controller에 도달하기 전에 FilterChain을 통한 인증 / 권한 검증을 진행한다. 그렇기 때문에 Filter에서 exception이 발생하게 되면 해당 filte..
-
고민이 생겼다 (feat. jwt, security)개인 프로젝트/3. simple board 02 2024. 1. 3. 15:59
in gateway 1. 접근 user의 토큰을 검증한다. 2. 유효한 토큰임 -> 통과 3. 유효하지 않은 토큰임 -> 401 ㅂ2 in user 1. 로그인 - jwt 생성 2. 로그인 외 - 토큰 정보로 security context 생성 in article 1. 토큰 정보로 security context 생성..? 시큐리티는 gateway를 제외하고 권한 관리가 필요한 모든 서비스에서 돌아야 하는 것인가 ;; 이것때문에 거의 2일을 손을 못대고 있다 (새해 맞이 github readme 꾸미기에 열을 올리느라 못한것도 있지만 😗) 🤔 고민
-
테스트 코드 체크 리스트!개인 프로젝트/3. simple board 02 2023. 12. 28. 08:14
테스트 코드 작성을 일부분 몰아서 하게 되어;; 테스트 코드 체크 리스를 작성해 보았는데 꽤 괜찮다고 생각되어 기록을 남기고 있다. 컨플루언스에서는 체크 리스트가 제대로 지원이 안되어서 옵시디언으로 관리하고자 옵시디언에 작성했었는데 , 읽기가 너무 불편했다. 그래서 깃허브 이슈에 옮겨 봤는데 아주 마음에 들었다! 앞으로도 체크 리스트는 깃허브 이슈를 이용해야겠다! https://github.com/zhyun-project/simple-board-02/issues/31#issue-2057823828 이메일 인증 관련 테스트 체크 리스트 · Issue #31 · zhyun-project/simple-board-02 닉네임 중복 확인 HTTP API 요청 테스트 이메일 중복 확인 HTTP API 요청 테스트 ..
-
(링크) 이메일 유효성 검사 정규식개인 프로젝트/3. simple board 02 2023. 12. 26. 17:53
https://solbel.tistory.com/309 [java] email 체크 정규식 [java] email 체크 정규식 /** * Comment : 정상적인 이메일 인지 검증. */ public static boolean isValidEmail(String email) { boolean err = false; String regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$"; Pattern p = Pattern.compile(regex solbel.tistory.com @Email(message = "올바른 이메일 주소를 입력해주세요.", regexp = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$")
-
(링크) @Validate Exception - Advice 처리개인 프로젝트/3. simple board 02 2023. 12. 26. 17:26
https://velog.io/@yeppi/SpringBoot5-실무-모범-사례 SpringBoot(5) 실무 모범 사례 앞서 배웠던 Validation 과 Exception 을 활용하여, 실무에서 적용되는 모범적인 사례를 살펴보자계속 발생하는 에러를 뽑고, 뽑은 에러로 메서드 만들어서 에러 처리해보자APIController.java전 실습에서 velog.io @RequestParam을 통해 들어오는 데이터를 검증하기 위해 클래스에 @Validate 어노테이션을 사용하는 경우, Advice에서 ConstraintViolationException.class를 핸들링하여 예외처리를 할 수 있다. 적용해본 프로젝트 코드 : https://github.com/zhyun-project/simple-board-02..
-
프로젝트 디렉토리 구조 다이어그램 참고 사이트개인 프로젝트/3. simple board 02 2023. 12. 21. 11:32
https://creately.com/ko/usage/%ED%8F%B4%EB%8D%94-%EA%B5%AC%EC%A1%B0-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8-%EB%8F%84%EA%B5%AC/ 폴더를 구성하는 폴더 구조 다이어그램 도구 | Creately 조직의 폴더 구조를 계획하고 폴더를 정렬하기 위한 폴더 구조 다이어그램 도구입니다. 필요에 맞는 적절한 폴더 구조 템플릿을 찾아 온라인으로 편집하세요. creately.com 이 사이트에서 다이어그램으로 표현한게 좋아보여서 따라해 보고 있다! 보통은 텍스트로 트리 구조를 뽑아내서 사용하던데 프로젝트를 모두 작성한 후 프로젝트 구조를 문서화 할 때는 트리 구조로 뽑아내는게 좋겠지만, 설계하는 단계에서는 다이어..
-
회원가입 - 닉네임 중복 검사 관련개인 프로젝트/3. simple board 02 2023. 12. 21. 05:25
닉네임 중복 확인 통과 후에 다른 닉네임으로 변경한다면? 중복 확인 통과 후에 다른 닉네임으로 다시 중복 검사 시도할 경우 (내맘대로 redis 의사코드 작성 😅) 1 redis에서 old_nickname 제거 무조건 기존에 통과했던 닉네임 정보를 redis에서 제거 old_nickname = redis find session_id redis delete old_nickname 2. redis에서 new_nickname 찾기 redis find new_nickname == 0 이면 1-1. redis save session_id - new_nickname 1-2. redis save new_nickname - session_id redis find new_nickname == 1 이면 new_nickna..
-
Spring boot : 특정 URL에 접속했다가 다른 URL로 이동하는 세션 찾기 (with ChatGPT)개인 프로젝트/3. simple board 02 2023. 12. 21. 04:25
회원가입을 구현하기 위한 설계를 해보던 와중에, 닉네임 관련해서 중복되게 하지 않기 위해 이 구현이 필요하다고 생각되어 찾아보게 되었다. 어떤 유저가 회원가입 진행 중 닉네임 중복 검사까지 통과하면 다른 신규 가입을 진행하려는 유저는 그 닉네임을 사용하지 못한다. 이때 회원가입을 자의로(혹은 타의로) 종료한 경우 중복 검사를 통과한 유저의 세션이 끊긴다면 해당 닉네임을 다른 사람이 사용할 수 있게 구현해 보려는 의도이다. ChatGPT 답변 아직 사용해 보지 못한 방법이지만, 이 방법으로 진행한다면 성공할 것 같아서 일단 먼저 해두는 기록! 특정 URL에 접속하면 접속 중으로 표시하고, 그 후에 다른 URL로 이동하면 접속 종료로 표시하는 방법에 대해서는 Spring Boot에서 Interceptor와 ..
-
GitHub Flow에 대한 고민개인 프로젝트/3. simple board 02 2023. 12. 20. 04:39
main브랜치와 feature/SB02-issue번호-기능명브랜치로 구성해서 사용하던 중에 문서만 작업하는 브랜치의 히스토리를 브랜치 자체로 남기고 싶어졌다. 그래서 생각해 낸 feature/SB02-issue번호-기능명-UPSTREAM브랜치! feature/SB02-issue번호-기능명브랜치로 작업하면서 첫 pr을 날리고, 업데이트 할 작업이 생기면 이 브랜치에서 작업하다가 첫 pr 이후 추가 pr을 날릴 땐 main 브랜치에서 feature/SB02-issue번호-기능명-UPSTREAM브랜치를 새로 생성한 후에 Cherry pick을 이용해 main 브랜치로 보낼 commit만 가져온 후 pr을 보내는 것이다. 안 좋은 생각일까? 생각 나누어 주실 분 ㅠㅠ … 일단 기존에 사용하던 방식보다 나은 것 ..