본문 바로가기

전체 글131

[깃터디/Todo] Todo 조회 api 구현 💡 .java를 클릭시 관련 커밋으로 이동💡  회고 비즈니스 로직을 구현할때 그에 맞는 컨트롤러, 서비스 구현도 중요하지만 테스트를 작성하는 과정이 중요하다고 느낀다. CRUD에서 R은 유저에게 보여줘야할 정보들이기 때문에 특히나 테스트가 더욱 중요하다고 느낀다. @Override public List findStudyTodoListByStudyInfoId(Long studyInfoId, Long cursorIdx, Long limit) { // Querydsl 쿼리 생성 JPAQuery query = queryFactory .select(Projections.constructor(StudyTodoResponse.class, .. 2024. 5. 11.
[깃터디/Todo] Todo 등록 api 구현 💡 .java를 클릭시 관련 커밋으로 이동💡  회고 @Repositorypublic interface StudyTodoRepository extends JpaRepository , StudyTodoRepositoryCustom{ Optional findByIdAndStudyInfoId(Long todoId, Long studyInfoId);}JpaRepository 인터페이스는 Spring Data JPA의 일부로, CRUD(Create, Read, Update, Delete) 작업을 위한 메서드를 제공해서 save(), findById() 등등을 쓸수있는것!!Optional findByIdAndStudyInfoId(Long todoId, Long studyInfoId); 특정 todoId와 s.. 2024. 5. 11.
[깃터디/Auth] 닉네임 중복검사 api 구현 💡 .java를 클릭시 관련 커밋으로 이동💡    회고 Entitiy 조회보단 -> Dto 조회가 성능상 유리QueryDsl에서 exist 메서드 쓰는것보다 JPA의 exists() 메서드를 사용했다. 그이유가 JPA exists()메서드는 선택된 항이 하나라도 존재하면 즉시 처리를 멈추고 결과를 반환하는데 QueryDsl exist 메서드는 실제로 count() > 0 으로 실행한다. // 참고한 자료 https://www.youtube.com/watch?v=zMAX7g6rO_Yhttps://yainii.tistory.com/36 @Test void 닉네임_중복체크_테스트_중복인경우() { // given userRepository.save(generateAuth.. 2024. 5. 10.
[깃터디/Auth] 회원 정보 조회 구현 💡 .java를 클릭시 관련 커밋으로 이동💡 /auth/info@AuthenticationPrincipal 사용하여 인증된 사용자의 정보 → 역할 확인(UNAUNTH 면 예외 처리)→ platformId + platformType 으로 DB에 저장된 값 조회 → 없으면 예외처리 → 사용자 정보 조회  AuthController.java@ApiResponse(responseCode = "200", description = "회원 정보 조회 성공", content = @Content(schema = @Schema(implementation = UserInfoResponse.class)))@GetMapping("/info") public JsonResult userInfo(@Authentication.. 2024. 5. 10.
[깃터디/Auth] 로그아웃 요청 구현 💡 .java를 클릭시 관련 커밋으로 이동💡   AuthController.javaprivate final static int REFRESH_TOKEN_INDEX = 2;@ApiResponse(responseCode = "200", description = "로그아웃 성공")@PostMapping("/logout") public JsonResult logout(@RequestHeader(name = "Authorization") String token) { List tokens = Arrays.asList(token.split(" ")); if (tokens.size() == 3) { authService.logout(tokens.get(REFRESH.. 2024. 5. 10.
[깃터디/Auth] 로그인 페이지 요청 구현 💡 .java를 클릭시 관련 커밋으로 이동💡 /auth/loginPagestate 생성 → state로 url 생성( 인가 코드 요청하여 URL 빌더로 생성 ) → OAuthService의 loginPage 함수를 통해 로그인 페이지 생성후 리턴 → JsonResult로 리턴 AuthController.java@Slf4j@RequiredArgsConstructor@RequestMapping("/auth")@RestControllerpublic class AuthController { private final AuthService authService; private final OAuthService oAuthService; private final LoginStateService lo.. 2024. 5. 10.
[깃터디/Auth] OAuth2 Login 구현 💡 .java를 클릭시 관련 커밋으로 이동💡  GoogleAdapter.java@Slf4j@Component@RequiredArgsConstructorpublic class GoogleAdapter implements OAuthAdapter { private final GoogleTokenClients googleTokenClients; private final GoogleProfileClients googleProfileClients; @Override public String getToken(String tokenURL) { try { GoogleTokenResponse token = googleTokenClients.getToken(URI.c.. 2024. 5. 10.
[깃터디] OAuth 2.0 OAuth인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.OAuth 2.01.0에서 알려진 보안 문제 등을 개선한 버전이다.웹 서핑을 하다 보면 Google과 Facebook 등의 외부 소셜 계정을 기반으로 간편히 회원가입 및 로그인할 수 있는 웹 어플리케이션을 쉽게 찾아볼 수 있다. 클릭 한 번으로 간편하게 로그인할 수 있을 뿐만 아니라, 연동되는 외부 웹 어플리케이션에서 Facebook 및 Twitter 등이 제공하는 기능을 간편하게 사용할 수 있다는 장점이 있다.예를 들어, Google로 로그인하면 API를 통해 연동된 계정의 Google Cale.. 2024. 5. 10.
[클라우드] 8. 스토리지 가상화 (Storage Virtualization) 스토리지 기술스토리지 • 데이터와 프로그램을 저장하는 기록 장치스토리지 기술 •  HDD, SSD 등과 같은 다양한 물리적 장치를 비롯하여 파일 시스템, 데이터 암호화 등과 같은 소프트웨어기술을포함고려사항 • 데이터 안정성, 신뢰성, 가용성, 성능, 확장성 및 비용 등을 고려 • 복제, 백업, 복구, 암호화, 압축, 색인화, 분산 등의 기술을 통해 제공 스토리지 가상화 기술스토리지 가상화 기술 • 여러 개의 물리적 스토리지 장치를 하나의 가상 스토리지로 묶어서 제공하는 기술, 이를 통해 효율적으로 자원 관리대표적인 예시(Local) • Redundant Array of Independent Disk (RAID) • Logical Volume Manager (LVM) RAID• 여러 개의 하드 디스크를 일.. 2024. 5. 10.
[깃터디] JWT Json web token Json web token당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 인터넷 표준 인증 방식이다.즉, 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. JWT 구조JWT는 .(점)을 구분자로 나누어지는 세 가지 문자열의 조합이다..(점)을 기준으로 좌측부터 Header, Payload, Signature을 의미한다. Header 에는 JWT에서 사용할 타입과 해시 알고리즘의 종류가 담겨있으며, Payload는 서버에서 첨부한 사용자 권한 정보와 데이터가 담겨있다. 마지막으로 Signature에는 Header, Payload를 Base64 URL-safe Encode를 한 이후 Header에 명시된 해시함수를 적용하고, 개인키(Private Key.. 2024. 5. 6.