본문 바로가기

취준생341

스터디 질문 20240214 스터디 질문 20240214 Access Token으로 회원 인증, 인가 방식을 설명해주세요. + spring security Access Token은 JWT Token이다. 즉 JWT 토큰의 Payload에, 해당 유저에 대한 정보를 저장할 수 있다. 여기서 비밀번호와 너무 디테일한 정보를 넣는 것은 권장하지 않는다. 여기서 회원 인증은 로그인을 할 때에, 유저가 입력한 ID와 비밀번호 토대로 유저가 유효한 유저인지 확인을 한다. 즉 회원 인증은 Spring Security를 통해서 한다. AuthenticationFilter에서는 UserPasswordAuthenticationToken을 통해, 입력한 유저ID와 비밀번호에 대한 토큰을 발행한다. 인증을 위해 AuthenticationManager에 .. 2024. 2. 14.
Java vs Python Java vs Python Java와 Python의 차이점 두 언어 모두 사용해보고, 취준을 하며 느낀 점 파이썬은 가독성이 자바보다 훨씬 뛰어나고, 코드도 작성하기 매우 쉽다 기본적으로 파이썬은 변수 타입을 따로 지정하지 않아도 된다 (코딩 테스트를 할 때에 변수명만 고민하면 된다) 파이썬은 AI, 데이터 쪽으로 더 많이 활용이 되는 것 같다 실제로 파이썬에서 AI와 데이터 쪽으로 라이브러리가 잘 형성되어 있다 (TensorFlow, Pytorch, NumPy, Pandas 등) 이는 파이썬이 자바보다 학습을 더 빠르게 할 수 있다는 영향도 있다 Compile 언어 vs Interpreted 언어 기본적으로 컴퓨터는 0과 1만 이해할 수 있다. 즉 개발 언어를 사용해도, 그 개발 언어에서는 0과 1로 .. 2024. 1. 31.
[USports] HTTPS [USports] HTTPS 백엔드는 HTTP 프로토콜을 사용하고, 프론트는 HTTPS를 사용하여 배포했을 때에 웹소켓이 잘 안 먹혔다 웹소켓 같은 경우 HTTP는 ws 그리고 HTTPS는 wss 프로토콜을 사용하게 된다 그래서 배포를 했을 때에, 실시간 채팅을 제대로 구현하기 위해서는 백엔드에서 HTTPS 프로토콜을 사용해야 겠다고 생각했다 여기서 HTTPS를 사용하면 자동으로 wss 프로토콜로 바뀌다고 한다 대부분이 도메인을 구매해서, HTTPS로 바꿨다 하지만 개인적으로, 백엔드는 Rest API만 구축했지, 굳이 도메인까지 구매를 해야할까? 라는 의문점이 들기 시작했다 다행히, 도메인 구매 없이 HTTPS로 바꾸는 방법이 존재했다 Caddy와 nip.io를 사용하는 것이었다 nip.io : 무료 .. 2024. 1. 14.
[USports] Spring AWS 배포 [USports] Spring AWS 배포 배포란? 프로젝트를 하다 보면, 프로젝트 테스트를 위해 localhost, 즉 로컬 서버로 어플리케이션을 띄운다 localhost는 '내 컴퓨터'의 서버를 사용하는 것이라서, 다른 사람들이 내 어플리케이션을 사용하기 위해서는, '내' 컴퓨터의 IP 주소, 그리고 컴퓨터의 주소까지 알아야 할 것이다 근데 이렇게 하면, 내가 컴퓨터를 끄게 되면, 내 어플리케이션을 사용하는 사람도 어플리케이션을 사용하지 못 할 것이다 그래서 그 localhost를 클라우드 서버에 넣어두는 것이다 여기서 클라우드 서버는, 클라우드 컴퓨터로, 해당 컴퓨터에 내 어플리케이션을 올려두는 것이다 이렇게 하면, 클라우드가 없어지지 않는 이상, 어플리케이션은 24시간 돌아가게되고, 다른 유저가 .. 2024. 1. 14.
[USports] Websocket 소개 [USports] Websocket 소개 HTTP 프로토콜 같은 경우 클라이언트가 요청을 보내고, 보낸 요청을 서버에서 응답을 하는 방식이다 웹에서 이루어지는 데이터 교환의 제일 기초적인 단계다 하지만 요청을 하고 응답을 하는 하나의 사이클이 끝나면, 클라이언트와 서버간의 연결은 끝나게 된다 example 클라이언트가 https://www.naver.com 을 서버에 요청을 한다 서버는 해당 페이지를 찾아서 응답을 해준다 클라이언트가 페이지를 받으면 클라이언트와 서버의 연결 상태는 끊기게 된다 즉 주식 정보, 비트코인 정보 같이 실시간으로 봐야하기 위해서는 새로 고침을 계속 눌러야 할 것이다 즉 실시간 데이터를 받기 위해 여러 방법이 있다 Polling & Long Polling Polling 같은 경우.. 2023. 12. 18.
[USports] Member OAuth2 [USports] Member OAuth2 Member를 만들고, 간편 인증이 필요할 것 같아 OAuth2를 사용하였다 그 중에 카카오 간편 로그인을 먼저 사용했다 OAuth란? 항상 간편 로그인을 위해서 사용되는 프로토콜인 줄 알았다 OAuth를 공부하면서 느낀 것 Resource Server, 즉 카카오나 네이버 같이 많은 사람들이 이미 회원가입을 한 어플리케이션에서, Client, 내 어플리케이션에게 자신들의 자원을 사용할 수 있는 권한을 주는 것이라고 크게 느꼈다 Resource Owner : 자원을 소유하는 사람 (예. 유저들) Resource Server : Resource Owner의 정보가 저장되어 있는 서버 (예. 카카오, 네이버) Client : Resource Server에 저장되어 .. 2023. 12. 9.
[USports] Member 단위 테스트 [USports] Member 단위 테스트 Mock 서비스를 테스트 할 때에 필요한 외부 클래스들을 넣었다 repository, passwordEncoder 등 MemberServiceImpl에 넣었던 클래스들을 Mock으로 넘겼다 InjectMocks Mock으로 설정했던 클래스들을 MemberServiceImpl에 넣는 것이다 Nested 테스트들을 단위별로 묶을 수 있다 예를 들어, 로그인 테스트, 회원가입 테스트 별로 나누고, 그 안에 성공 케이스와 실패 케이스를 넣을 수 있다 when, thenReturn 주로 메서드 내에 repository를 사용하던지, 또는 Mock으로 설정된 클래스를 사용할 때에 when을 사용한다. 그리고 thenReturn을 통해서 when에서 불러온 메서드를 통해 어.. 2023. 12. 7.
[USports] Email 전송 [USports] Email 전송 프로젝트에서 이메일 인증과, 임시 비밀번호를 이메일을 통해 는 것이 있다 구글 SMTP 서버를 이용하였다프로젝트 용 이메일을 새로 만들고, 프로젝트를 위해, 원래 비밀번호가 아닌, 프로젝트 용 비밀번호를 개인 설정에서 받을 수 있다 하기 전에 2차 인증까지 설정을 해야 한다! Google 계정 관리에 들어가기검색에서 앱 비밀번호를 치고, 들어가기그러면 계정 비밀번호를 입력하라고 뜬다 App Name에 어플리케이션 이름 입력하기 앱 비밀번호를 받고, 꼭 복사하기 (잊어버리면, 또 다시 앱을 입력해야 한다)그리고 외부에 노출하지 말기! Gmail의 설정에 들어가서 전달 및 POP/IMAP에 들어가기 아래와 같이 설정하기  build.gradle아래 추가implementati.. 2023. 12. 6.
[USports] Login 구현 [USports] Login 구현 MemberController 로그인 로그인을 하면 access token과 refresh token을 받게 된다 MemberDto에 UserDetail을 넣어 활용했다 memberService.loginMember()에서는 간단하게 비밀번호가 일치하는지 그리고 유저가 DB에 존재하는 확인하면 된다 확인 후 MemberDto를 리턴하고, tokenProvider.saveTokenInRedis() 를 진행한다 재발급 access token이 만료되었을 경우 reissue, 재발급을 통해 refresh token과 access token을 받게 된다 tokenProvider.regenerateToken(refreshToken) 을 통해 재발급을 진행 로그아웃 로그아웃을 하면.. 2023. 12. 5.