[토이 프로젝트] spring boot 회원가입 기능 -2
·
프로젝트 및 컨퍼런스 회고
이전 게시글 [토이 프로젝트] spring boot 스프링 시큐리티 토큰 적용하기 (Bearer Token)이전 글 [토이 프로젝트] spring boot 로그인 기능 만들기-2 (스프링 시큐리티 적용)이전 프로젝트 [토이 프로젝트] 회원가입 기능 만들기-1사실 아직 만들고 싶은 프로젝트는 생각안해봤다.다만 프devhan.tistory.com 이번에 HttpOnly Cookie + JWT 조합을 구현해보려고 했으나.. 회원가입 기능과 테스트 쪽을 먼저 구현해야 할 것 같아서 노선을 틀었다. 그래서 이번에 할 목록은 아래 4개다.회원가입 기능 강화로그아웃 기능AuthController 리팩토링사실 게시글 제목은 회원가입 기능-2지만 더 다양한 걸 한 번에 쭉 해볼 예정이다.뭔가 제일 금방할 것 같은 로그아..
[토이 프로젝트] spring boot 스프링 시큐리티 토큰 적용하기 (Bearer Token)
·
프로젝트 및 컨퍼런스 회고/프로젝트
이전 글 [토이 프로젝트] spring boot 로그인 기능 만들기-2 (스프링 시큐리티 적용)이전 프로젝트 [토이 프로젝트] 회원가입 기능 만들기-1사실 아직 만들고 싶은 프로젝트는 생각안해봤다.다만 프로젝트를 해봐야 실력이 정말 늘 것 같아서 일단 대중적이고 레퍼런스 자료가devhan.tistory.com 이전 게시글에서 스프링 시큐리티를 통과하는 단순한 로그인 기능을 구현했다. 문제점은 DB를 조회해서 유효성 검사하는 기능까지는 다 됐지만 로그인 이후에 인증이 필요한 페이지에 접속하면 접속이 안되는 문제가 있었다.왜냐면 스프링 시큐리티에 이 사용자는 인증된 사용자임을 모르기 때문이다. 즉, 인증 상태가 유지되지 않는다.이번에는 http header에 Authorization 인증 정보를 추가해서 인..
[토이 프로젝트] spring boot 로그인 기능 만들기-2 (스프링 시큐리티 적용)
·
프로젝트 및 컨퍼런스 회고/프로젝트
이전 프로젝트 [토이 프로젝트] 회원가입 기능 만들기-1사실 아직 만들고 싶은 프로젝트는 생각안해봤다.다만 프로젝트를 해봐야 실력이 정말 늘 것 같아서 일단 대중적이고 레퍼런스 자료가 제일 많은커뮤니티 사이트를 만들어보려한다. 환경은 일devhan.tistory.com 이번엔 로그인 기능에 스프링 시큐리티를 적용해서 보안을 강화해보자.먼저, build.gradle에 스프링 시큐리티를 추가해준다.dependencies { implementation "org.springframework.boot:spring-boot-starter-security"} 다양한 기능(ex.OAuth 2.0 등)을 동시에 적용할 수 있겠지만 일단 차근차근 적용해보는 거로 하자.그래서 일단 제일 기본적인 아이디/비밀번호 로그인 기반..
[토이 프로젝트] spring boot 로그인 기능 만들기-1
·
프로젝트 및 컨퍼런스 회고/프로젝트
이전 게시글 [토이 프로젝트] 회원가입 기능 만들기-1사실 아직 만들고 싶은 프로젝트는 생각안해봤다.다만 프로젝트를 해봐야 실력이 정말 늘 것 같아서 일단 대중적이고 레퍼런스 자료가 제일 많은커뮤니티 사이트를 만들어보려한다. 환경은 일devhan.tistory.com 제일 처음으로 회원가입 기능을 만들었다. 회원가입 기능을 고도화할까 하다가 로그인 기능을 먼저 만들고 하는 게 나을 거 같아서 오늘은 로그인 기능을 만들어보겠다. 먼저 로그인 화면을 만들어주자. CSS는 일단 회원가입 화면에서 썼던 거 가져왔다. 아이디: 비밀번호: ..
[토이 프로젝트] spring boot 회원가입 기능 만들기-1
·
프로젝트 및 컨퍼런스 회고/프로젝트
사실 아직 만들고 싶은 프로젝트는 생각안해봤다.다만 프로젝트를 해봐야 실력이 정말 늘 것 같아서 일단 대중적이고 레퍼런스 자료가 제일 많은커뮤니티 사이트를 만들어보려한다. 환경은 일단 간단하게만 생각해봤다.spring boot 3.4.2JPAMySQLThymeleaf -> react(욕심) 리액트를 예~전에 한 번 쓰윽 봤었으나 전혀 기억이 안나서 백지랑 똑같다.일단 빨리 끝내는게 목표니 서버쪽을 Thymeleaf로 후다닥 만들고 리액트와 Next.js를 좀 배워서 화면쪽을 바꿔 볼 생각이다. 뭐 생각은 일단 그렇다. 아무튼.. 얼른 시작!스프링 프로젝트는 아래와 같이 만들었다.프로젝트를 여러 번 만들어봤지만 제일 떨리는 순간은 Generate 버튼을 누를 때!깃 레포도 하나 만들어줬다. 클론 후 git..
넥사크로에서 지원하지 않는 CSS 적용하기
·
공부/넥사크로
넥사크로에서는 지원하지 않는 CSS를 테마 파일에 넣으면 테마 파일을 저장할 때 아예 에러가 나버린다.이걸 어떻게 하면 사용할 수 있지 하다가 자바스크립트니까 스크립트에서 객체에 접근해서 설정할 수도 있을 거란 생각이 들어서 바로 테스트해봤다.일단 화면에 돌려버릴 버튼 하나를 만든다.그리고 버튼에 onmouseenter(), onmouseleave() 이벤트를 걸어주고폼에도 onload() 이벤트를 걸어준다. 그리고 스크립트에서 document로 객체를 불러와 style을 직접 준다.this.fvButton;this.Form_Work_onload = function(obj:nexacro.Form,e:nexacro.LoadEventInfo){ this.fvButton = document.getElement..
프로그래머스_문자열 나누기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제는 2주차 마지막 문제.. '문자열 나누기'다.그래도 마지막 문젠데.. 생각보다 쉬워서 놀라버리기챗GPT.... 커리큘럼 잘 못짜는구나? 어찌됐든 푼다! 코드class Solution { public int solution(String s) { int answer = 0; int same = 1; int notSame = 0; char targetChar = s.charAt(0); if(s.length() == 1) return 1; for..
프로그래머스_최빈값 구하기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번에 풀 문제는 '최빈값'이다.새롭게 푸는 문제라 과거 코드는 없다.이번 문제는 짧고 요구사항이 정확해서 마음에 들었다. 코드import java.util.*;class Solution { public int solution(int[] array) { int answer = -1; Map map = new HashMap(); for(int i = 0; i entry : map.entrySet()) { Integer key = entry.getKey(); In..
프로그래머스_예산 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번에 풀 문제는 '예산'이다.과거에 풀었던 문제라 과거 코드가 남아있었다. 과거 코드import java.util.*;class Solution { public int solution(int[] d, int budget) { int answer = 0; Arrays.sort(d); if(d[0] > budget) return 0; for(int i = 0; i = d[i]) { budget -= d[i]; ..
프로그래머스_기능개발 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 원래 3차원 어쩌구 문제가 있었는데 프로그래머스 안에서 검색해보니 나오질 않아서 최신 문제들로 다시 추천해달라고 했다.그래서 오늘 풀 문제는 '기능개발'이다. 이번 문제는 처음 풀어보는 문제였다. 그래서 과거 코드는 없다.문제를 읽었을 땐 문제에서 뭔가 강조하는 것 같았던 '작업 일수'는 별로 신경 안 써도 될 거 같았는데..아니 문제를 풀다보니깐 '작업 일수'가 되게 중요한 거였다..!역시 문제에 나오는 내용은 허튼 것이 없다. 코드import java.util.*;class Solution { public List solution(int[] pro..
프로그래머스_두 개 뽑아서 더하기 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번에 풀 문제는 '두 개 뽑아서 더하기'다.과거에 풀었던 문제라 과거 코드가 남아있다.근데 진짜 푼 기억이 없는데 도대체 뭐지;;대충 풀고 베꼈을ㄲ..ㅏ? 과거 코드import java.util.*;class Solution { public TreeSet solution(int[] numbers) { TreeSet answer = new TreeSet(); for(int i = 0; i 과거에는  TreeSet의 자료구조로 문제를 풀었다. 현재 코드 - 중간import java.util.*;class Solut..
프로그래머스_체육복 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번에 풀 문제는 '체육복'이다.이미 과거에 풀었던 문제라 과거 코드가 남아있다. 과거 코드import java.util.*;class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = n - lost.length; List list = new ArrayList(); for(int l : reserve) { list.add(l); } f..
프로그래머스_같은 숫자는 싫어 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제는 '같은 숫자는 싫어'다.이 문제는 풀었던 문제라 과거 코드가 남아있었다. 과거 코드import java.util.*;public class Solution { public List solution(int []arr) { List list = new ArrayList(); int temp = -1; for(int n : arr) { if(temp != n) list.add(n); temp = n; } return..
프로그래머스_프로세스 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 오늘 풀어볼 문제는 '프린터'였지만 프로그래머스에서 아무리 찾아봐도 안나와서챗GPT한테 물어보니 프린터 문제가 프로세스로 바뀌었단다.... 챗GPT를 너무 맹신하면 안 된다.휴 내 발등을 한 두번 찍는게 아니란 말이지.아무튼 이번 문제는 처음 풀어보는 문제다. 그래서 과거 코드가 없다.이번에는 Deque를 사용했다. 영한쓰가 자바 강의에서 stack과 queue보다는 Deque를 사용하라했다.자세한 내용은 기억이 안나서 챗GPT한테 물어봤더니1. 단순한 큐 동작만 필요하면 Queue가 빠름2. 양방향 삽입/삭제가 필요한 경우라면 Deque 사용이 더 유리함..
프로그래머스_다리를 지나는 트럭 JAVA
·
알고리즘/알고리즘 풀이
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이번 문제는 ‘다리를 지나는 트럭’이다. 처음 푸는 문제라 과거 코드는 없다.스택과 큐 휴휴 많이 안써봐서 잘 풀릴지 모르겠다그래도 일단 도전!코드import java.util.*;class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { Queue bridge = new LinkedList(); int currentWeight = 0; int time = 0; int index =..