전체 글69 OAuth2 네이버 간편 로그인 '등록되지 않은 사이트' 문제 OAuth2를 사용하여 네이버 간편 로그인 기능을 구현하다가 발생한 문제이다. 등록되지 않은 사이트에서 로그인 시도 문제 해결 방법 : 네이버 로그인 고객센터 아래의 오류 메시지는 이용하려는 서비스에서 '네이버 로그인' 적용에 오류가 있는 경우 노출됩니다. 이용 상황에 맞게 아래의 버튼을 선택하여 이동해 주세요.네이버 로그인 서비스를 help.naver.com 네이버에서도 대처 방법에 대해서 서술해두었는데, 보통 이런 경우 리다이렉트 URL을 잘못 설정한 경우 발생하는 것으로 보여진다. 그러나 나의 경우 Naver Developers에서 등록한 어플리케이션의 리다이렉트 URL과 application.yml 파일에 설정한 redirect-url이 일치하는 것을 몇 번이고 확인했으나 동일한 문제가 반복.. 2023. 7. 23. [Back-End] @Builder 패턴 Builder Pattern 백엔드 개발 시 Entity나 Dto와 같은 객체를 생성할 때 사용할 수 있는 방법은 크게 세 가지가 있다. - 생성자 - Setter - Builder Builder 패턴 사용 권장 이유 더보기 만약 백엔드 웹개발을 처음 배운다면 생성자 혹은 Setter를 사용하는 것이 일반적일 것이고 나 역시도 그랬었다. 그러나 이 두 방법들은 각각 단점을 가지고 있다. 생성자 패턴의 경우 객체에 넣어야 할 인자가 많을 경우 몇 번째 인자에 어떤 데이터를 넣어야 하는지 헷갈릴 수도 있다. 나 역시 이전 프로젝트에서 생성자 패턴을 주로 사용했었는데 주의하지 않으면 엉뚱한 데이터가 들어가기도 하고, 넣어야 하는 인자 보다 적거나 많게 넣어 컴파일 에러가 발생하기도 하였다. Setter를 사용.. 2023. 7. 12. [SpringSecurity] 예외 : InternalAuthenticationServiceException: A granted authority textual representation is required 스프링 시큐리티의 로그인 기능에 대해서 공부하다가 다음과 같은 예외를 만났다. InternalAuthenticationServiceException: A granted authority textual representation is required 직역하자면 내부 인증 서비스 예외가 발생하였고, 승인된 표현이 필요하다? 라는 의미인 것 같다. 구글링 해보니 로그인 서비스의 loadUserByUsername 메서드 내부에서 null 값이 들어와서 발생하는 예외라고 하였다. 발생한 위치는 해결한 방법 뒤에 기록해두겠다. @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { Option.. 2023. 7. 1. [HTTP] 자주보는 상태코드의 의미(404, 500...) 100 ~ 199 : 클라이언트의 요청을 받았으며, 클라이언트의 그 다음 행동에 대한 정보 제공. 200 ~ 299 : 요청 받은 것이 성공적으로 처리됨. 300 ~ 399 : 파일들이 이동되었을 때. 이동하는 위치를 나타내는 Location 헤더가 응답에 포함됨. 400 ~ 499 : 클라이언트에 의해 발생한 오류. 500 ~ 599 : 서버에 의해 발생한 오류. 그 중에서 자주 만나는 에러는 다음과 같다. HTTP 400 에러 : 서버가 요청 구문을 인식하지 못했다는 뜻으로 문법상 오류가 존재하는 경우. HTTP 401 에러 : 접근 권한이 없는 경우. 인증이 필요한데 인증이 되지 않은 경우. HTTP 403 에러 : 서버가 요청을 거부하고 있는 경우 즉, 접근이 금지된 상태. HTTP 404 에러 .. 2023. 6. 29. [SpringBoot] 스프링 부트 Hello, World! 페이지 띄우기 이전까지 스프링을 이용해서 프로젝트를 진행했었는데, 한편으로는 스프링 부트에 대한 궁금증이 있었다. 따라서 이번 기회에 스프링 부트를 한 번 사용해보자는 마음을 먹었다. 추가로 의존성 주입에 maven을 사용해왔었는데 최근 gradle을 사용하여 프로젝트를 진행하는 경우도 있다고 하니 gradle에 대해서도 공부해 보고 싶다. 이클립스에서 스프링 부트 프로젝트를 생성해보자. 이클립스에서 상단의 File - New - Project를 눌러서 아래 사진과 같이 Spring Boot의 Spring Starter Project를 선택한다. 그 다음 디렉토리명이나 버전을 선택할 수 있는 탭이 나온다. 나는 gradle을 사용할 것이므로 gradle을 선택해주고 Packaging은 jar, Language는 Jav.. 2023. 6. 20. [Spring] Port 8080 was already in use 에러 대처법 스프링을 사용하여 프로젝트를 진행하다보면 종종 만나는 아이이다. 나는 똑같은 과정으로 서버를 실행한다고 생각하는데 잊을만하면 나타난다. 해결하는 여러가지 방법이 있겠지만 개인적으로 해당 포트를 강제로 비워주는 방법을 애용한다. 명령 프롬프트를 실행(윈도우 + R 누르고 cmd 입력. 또는 그냥 작업표시줄 검색창에 cmd 입력) 후, 아래 문장을 복붙한다. netstat -ao 그럼 아래와 같이 뜨는데, 8080 포트에 해당하는 PID를 기억해둔다. 그리고 다시 cmd 창에 아래 명령어를 입력한다. taskkill /f /pid [방금 확인한 PID] 그럼 적어도 port 8080 was already in use는 뜨지 않을 것이다. 2023. 6. 20. [백준] 10830번 - 행렬 제곱 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 크기가 N*N 인 행렬 A를 B번 제곱한 결과를 출력하시오. 단, A^B의 각 원소를 1,000으로 나누어 출력한다. 조건 2 2023. 6. 17. [백준] 1766번 - 문제집 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 문제 N개의 문제 중 a문제를 b문제보다 먼저 풀어야 하는 관계인 문제쌍 (a, b)가 M개 주어졌을 때, 문제를 풀어야 하는 순서를 출력하시오. 단, 가능한 쉬운 문제 먼저 풀어야 한다. 조건 1 2023. 6. 16. [백준] 2609번 - 최대공약수와 최소공배수 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 이 문제는 이전에 직관적인 풀이로 해결한 적이 있었는데 최근 프로그래머스에서 최대 공약수와 최소 공배수를 이용하는 문제를 접했다가 처음보는 풀이법을 확인하고 다시 들여다 보게 되었다. 우선, 이전에 내가 풀이를 했던 방식은 단순히 최대 공약수와 최소 공배수를 찾을 때까지 인자를 하나씩 키우거나 줄이면서 해결하는 방법이었다. private void solution () { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); // 변수 b에.. 2023. 6. 15. 이전 1 2 3 4 ··· 8 다음