[토이 프로젝트] 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..
넥사크로 그리드 expr에서 사용자 정의 함수 호출하기
·
공부/넥사크로
expr 도움말은 Components > Component > Grid > Objects > GridCellControl에 있다(찾기 겁나 힘듦).아니면 Appendix > Dataset Expression을 봐도 된다.도움말에 쓰여있는 대로 'comp'는 그리드 컴포넌트를 가리킨다. 그러므로 그리드 cell 속성에 expr에 기입하는 comp는 자기 자신이다. 함수는 그리드가 아닌 폼(form)에 선언되어 있으므로 폼을 찾아가려면 comp.parent를 하면 form을 가리킨다. 그리고 함수를 호출하면 된다.즉, expr에서 함수 호출은 comp.parent.함수명(파라미터)로 호출하면 된다.this.fnSetSound = function(nRow){ return this.dsTest.getColumn..
넥사크로 그리드 셀 클릭 시 바인드 된 컬럼명 알아내기
·
공부/넥사크로
그리드 셀 클릭 시 발생하는 이벤트(oncellclick)에서 바인드 된 컬럼명을 알아내보자.this.grd00_oncellclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo){};oncellclick의 이벤트 객체인 GridClickEventInfo를 도움말에 검색해보자.딱히 바인드 된 컬럼명을 가져올 수 있는 속성은 없다. 그나마 사용할만한 속성은 e.cell과 e.col이다.클릭할때마다 무슨 값이 나오는지 확인해보자.this.grd00_oncellclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo){ this.sta00_00.set_text("e.cell : " + e.cell ..
스프링부트 3.X 스프링 시큐리티 JWT 토큰 기능 구현하기
·
공부/Spring
Spring Boot 3.0.2 version 기준입니다. (Spring Boot 3.1.0까지 실행 확인) 이전 글 아래 포스팅과 이어지는 글입니다. 스프링부트 3.X 스프링 시큐리티 사용해서 회원가입, 로그인, 로그아웃 구현하기 스프링 시큐리티? 스프링 시큐리티는 스프링 기반의 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크이다. 인증(Authentication)? 인증은 사용자의 신원을 입증하는 과정이 devhan.tistory.com JWT? JWT는 JSON Web Token의 줄임말이다. JWT는 토큰 기반 인증을 지원한다. 토큰 기반 인증은 말 그대로 토큰을 사용하는 방법인데, 토큰은 서버에서 클라이언트를 구분하기 위한 유일한 값이다. 서버에서 토큰을 생성해서 클라이..
스프링부트 3.X 스프링 시큐리티 사용해서 회원가입, 로그인, 로그아웃 구현하기
·
공부/Spring
스프링 시큐리티? 스프링 시큐리티는 스프링 기반의 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크이다. 인증(Authentication)? 인증은 사용자의 신원을 입증하는 과정이다. 쉽게 말하면 우리가 흔히 어떤 사이트에 아이디와 비밀번호를 입력하고 로그인하는 과정이다. 인가(Authorization)? 인가는 사용자의 권한을 확인하는 작업이다. 이것도 쉽게 말하면 파일 공유 시스템에서 권한 별로 접근할 수 있는 폴더가 상이하다. 상위직책자는 들어갈 수 있고, 하위 직책자는 접근할 수 없는 경우 사용자의 권한을 확인해야 하는데 이 과정을 인가라고 한다. 그래서 스프링 시큐리티? 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다. 이름에 걸맞게 보안 관련 옵션을..
Gradle 프로젝트를 Springboot 3.X 프로젝트로 변경하기
·
공부/Spring
Gradle? Gradle은 Build system 중 하나로 소스 코드를 이용해서 실행 가능한 애플리케이션을 생성하는 과정을 자동화하는 프로그램이며, 의존성 내려받기, 코드 패키징, 컴파일, 테스트 실행 등이 포함된다. Gradle 외에 Maven이 있으며 요즘엔 Maven 보다는 Gradle을 많이 사용하는 추세다. Gradle 특징 XML 형식으로 작성되는 Maven에 비해 가독성이 좋고 설정이 간단함 자바, 코틀린, 그루비 등 다양한 언어 지원, 원하는 대로 빌드 스크립트 작성 가능 빌드와 테스트 속도가 Maven에 비해 더 빠름 Springboot 3.X 프로젝트로 변환 build.gradle 기존 소스 plugins { id 'java' } group 'me.hs' version '1.0-SN..
스프링부트 3.X에 Swagger 적용하기
·
공부/Spring
프로젝트 개발에 본격적으로 들어가기에 앞서 API 문서 자동화가 필요한 거 같아 Swagger를 적용하려한다. Swagger란? 스웨거는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 별도의 스웨거 UI 도구를 통해 스웨거를 사용하며 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다. 출처 : 위키백과 Springfox Swagger vs Springdoc Spring Swagger의 경우 2020년의 마지막 버전인 3.0.0에서 멈춰있고, Springdoc의 경우엔 2023년에도 업데이트가 된 것을 mavenRepository에서 확인할 수 있다. 또한 둘의 차이점은 webflux의 지원..
SpringBoot 3.X 인텔리제이 켜자마자 에러가 발생했을 때 해결 법
·
에러 해결
새로운 프로젝트를 실행해보고자 git에서 팀원이 올려놓은 프로젝트를 받아서 실행해보려 했는데 켜자마자 기다렸다는 듯이 에러가 우수수 떨어졌다. A problem occurred configuring root project 'tooit'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.0. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.0 > No matching variant of org.s..
토비의 스프링 부트 - 자동 구성 기반 애플리케이션_1
·
공부/Spring
메타 애노테이션과 합성 애노테이션 @UnitTest 애노테이션 생성 @Test 메서드가 붙어있는 simpleHelloService()의 애노테이션을 @UnitTest 애노테이션으로 변경해보자. 물론 새로 생성해줘야한다. @UnitTest void simpleHelloService() { SimpleHelloService helloService = new SimpleHelloService(); String ret = helloService.sayHello("Test"); Assertions.assertThat(ret).isEqualTo("Hello Test"); } @Test void helloDecorator() { HelloDecorator decorator = new HelloDecorator(nam..
토비의 스프링 부트 - DI와 테스트, 디자인 패턴
·
공부/Spring
테스트 코드를 이용한 테스트 여태 코드를 작성하면 서버를 재실행하고 인텔리제이 터미널에서 HTTPie로 테스트를 진행했다. 이렇게 사람이 수동으로 테스트를 하는 것보다 테스트 코드를 작성해서 사람보다는 기계?가 테스트하는 게 훨씬 시간도 절약되고 정확성이 높다. HelloApiTest.java public class HelloApiTest { @Test void helloApi() { } } 내용이 빈 메서드를 만들고 실행해보면 테스트가 통과되었다는 표시가 뜬다. 검증할 내용이 없어 테스트가 통과되지 않는 상황이 없기에 몇 번을 돌려도 테스트는 통과된다. TestRestTemplate.java @Test void helloApi() { // http localhost:8080/hello?name=Spri..