본문 바로가기

장생농

(138)
OAuth 2.0 - 생활코딩 강의 정리(3) 생활코딩님의 강의를 듣고 정리하는 글입니다. 제가 임의로 다시 정리한 것이기 때문에 실제 강의와는 조금 다릅니다. API 호출. 클라이언트가 리소스 서버를 사용하기 위해서는 리소스 오너, 리소스 서버의 인증을 받은 후 API를 호출해야 한다. 당연히 서비스를 제공하는 회사마다 API를 제공하는 방법은 다르다. Refresh token. 액세스 토크은 수명이 있다. 그럼 그 수명이 끝나면 API로부터 정보를 받을 수 없다. 그래서 다시 액세스 토큰을 발급해야 하는데 다시 액세스 토큰은 번거로운 일이다. 그럴 때, 쉽게 액세스 토큰을 얻는 방법이 리프레쉬 토큰이다. 보통 액세스 토큰을 발급할 때, 리프레쉬 토큰을 같이 준다. 그리고 액세스 토큰을 사용해 리소스 서버를 사용한다. 그러다 액세스 토큰의 수명이 ..
OAuth 2.0 - 생활코딩 강의 정리(2) 생활코딩님의 강의를 듣고 정리하는 글입니다. 제가 임의로 다시 정리한 것이기 때문에 실제 강의와는 조금 다릅니다. 리소스 오너의 승인. 클라이언트를 리소스 서버에 등록하게 되면 리소스 서버는 해당 클라이언트 id, secret, redirect uri을 갖게 된다. 등록 과정을 마치면 리소스 오너가 리소스 서버에게 클라이언트의 접근을 승인한다는 것을 알려야 한다. 만약 리소스 서버가 A, B, C, D 의 기능을 갖고 있고 클라이언트가 B, C를 사용할 것이라면, 그것에 대한 인증만 받는 것이 좋다. 리소스 오너(유저, 사용자)가 {클라이언트의 기능}을 사용하기 위해 {리소스 서버의 기능}을 사용해야 한다면, 클라이언트는 리소스 오너에게 링크를 건네준다. 이 링크에는 클라이언트 id, 사용할 리소스 서버..
OAuth 2.0 - 생활코딩 강의 정리(1) 생활코딩님의 강의를 듣고 정리하는 글입니다. 제가 임의로 다시 정리한 것이기 때문에 실제 강의와는 조금 다릅니다. OAuth라는 기술은 언제 사용하는 것인가? 먼저 나의 서비스, 그것의 사용자, 그리고 구글과 같은 대형 서비스가 있다고 하자. 대형 서비스는 구글이라고 퉁치자. 나의 서비스는 사용자에게 구글 아이디와 비밀번호를 받고, 나의 서비스는 그것을 갖고 구글에 로그인하여 기능을 제공한다. 이렇게 된다면 사용자의 아이디, 비밀번호가 나의 서비스에게 그대로 전달되는 문제가 생기고, 이것은 구글에게도 문제가 된다. 이런 상황을 해결할 수 있는 기술이 OAuth이다. 나의 서비스와 구글을 연동시키는 것이다. 사용자의 요청에 의해 구글(대형 서비스)은 accessToken이라는 일종의 비밀번호 같은 것을 나..
mustache 페이지 인덱스 - 숫자 반복문(리스트)로 만듦 mustache 템플릿에서 페이지 인덱스 버튼을 구상하는 중에 반복문을 사용해서 totalPages를 이용해 인덱스 버튼을 만들 수 있지 않을까 하고 생각해봤다. 찾다보니 원하는 방법은 없지만, 억지로 만드는 방법은 있었다. 숫자를 기준으로 하는 반복문은 못찾았지만, 리스트를 기반으로 하는 반복문은 찾았다. 따라서 1부터 totalPages까지 숫자가 담긴 리스트를 mustache에게 전달해서 하나씩 반복해서 전달하도록 하면 됐다. 근데 이건 너무 억지 같긴 하다. 억지 페이징 코드 전체 페이지 수가 0부터 담긴 리스트를 만들어 전달한다. 반복문을 사용하여 인덱스 버튼을 만든다. 억지 인덱스 버튼 완성!
자바 코딩 테스트 삽질 - 마침표로 split 하기 코딩 테스트에서 마침표 . 를 갖고 split을 했더니 계속 안됐다. 온라인 에디터를 사용해서 그런 것인줄 알았는데 그게 아니라 split("\\.")으로 했어야 했다. 스택오버플로우에서 찾아보니 특수문자여서 그렇다고 한다. 심지어 \.으로 인식이 안됐다. 역슬래쉬+역슬래쉬+마침표 -> 이렇게 split해야 된다. stackoverflow.com/questions/14833008/java-string-split-with-dot Java string split with "." (dot) Why does the second line of this code throw ArrayIndexOutOfBoundsException? String filename = "D:/some folder/001.docx"; Str..
공부 소스를 공유하는 사이트 - 스프링 부트 프로젝트 만들기(3) 어느정도 CRUD를 만들었는데 페이징 처리하는게 골아프다. 우선 배운 것처럼 Paging을 위해 TotalElement, TotalPage, CurrentElement, CurrentPage를 갖는 객체를 만들었다. 이 정보들을 가지고 프론트 단에서 처리할 것들을 생각나는대로 적는다면 * 페이지 버튼 만들기 - 하단의 1페이지, 2페이지, .. 이런거 * 페이지당 해당 페이지의 게시글 정보 가져오기 한동안 페이징 처리를 고민했는데 내가 적었던 글을 다시 보니 생각이 났다. 이럴려고 적어놓는 것인데 적은 것조차도 잊었다.ㄷㄷ 페이징 처리하기 게시판이 구현된 사이트는 특정 개수대로 게시글을 나눠 페이지 별로 보여준다. jpa를 이용하면 이런 페이징 처리를 비교적 간단히 할 수 있다. 몇개씩 노출시킬 지, 어..
(업데이트 중인)스프링부트 - 어드민 페이지 프로젝트(3) 메인 페이지에 노출시킬 정보를 가져오는 API를 만들어 적용시켰다. 원래는 그냥 의미없는 값들이 노출되었다. 업데이트된 메인 페이지에는 각각 데이터의 수를 가져와 보이도록 바꿨다. 뷰 코드가 생각보다 쉬워서 금방 프론트 코드에 적용했다.
MockMvc 테스트에서 한글 깨짐 현상 mockMvc로 스프링부트 프로젝트를 테스트하는데, 강의에는 안그렇지만, 최신 버전을 사용하는 내 스프링부트에서는 mockmvc 테스트에서 한글이 깨진다. 해결 시도 1. www.python2.net/questions-809744.htm MockMvc는 더 이상 Spring Boot 220에서 UTF-8 문자를 처리하지 않습니다 새로 출시 된 2.2.0.RELEASE 로 업그레이드 한 후 Spring Boot 버전 테스트 중 일부가 실패했습니다. 그것은 MediaType.APPLICATION_JSON_UTF8 것으로 보인다 더 이상 사용되지 않으며 더 이상 콘텐츠 유형을 www.python2.net 여기서 제일 간단한 방법인, chracterEncoding을 붙이는 것이다. 결과는 그대로다. 혹시 몰라 ..