[Spring Security] 기본 개념과 구조
·
개발/Spring
https://spring.io/projects/spring-security Spring SecuritySpring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorizspring.io1. 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크이다.2. 자바 애플리케이션에 인증과 인가를 제공하는 데 중점을 둔 프레임워크..
ep08. 본인인증 (SpringBoot + Coolsms + Redis)
·
개발/Team Project
이번 포스팅에서는 본인인증에 대해 작성해보려고 한다. Coolsms + Redis 조합으로 작업했으며 인증문자 발송부터 인증까지 상세하게 작성해 보도록 하겠다.  본인인증특정한 방법을 통하여 특정인이 본임임을 증명하는 방법재능 공유, 경험 공유, 중고거래 장터 이용 등 팀 프로젝트 컨셉에 따라 회원가입을 할 때 본인에 대한 인증이 필수다. 개인 연락처를 입력하게 하고 인증번호를 전송하여 확인을 통해 본인 인증을 하는 방식을 선택했다. 문자 인증 API를 찾아보고 제일 저렴하고 레퍼런스(기술 블로그)가 많은 coolSMS를 선택하였다. 사이트에 접속하여 회원가입을 하고 개발/연동 배너에서 API key를 생성한다. 시뻘건 글씨로 안내되고 있듯 key는 절대로 외부에 공개되면 안 된다.CoolSMS1. 기본..
ep07. 회원가입 기능 구현 - 중복검사
·
개발/Team Project
화면 구현과 유효성검사를 마쳤으니 이제 회원가입 기능을 구현해보고자 한다. SpringSecurity와 JWT 설정, 패스워드 암호화, 실명인증, 중복검사 등 해야 할 게 많다...... SpringSecurity + JWT 적용은 다른 기능들을 적용시키고 마지막에 진행해보려 한다. 이번 포스팅에서는 회원가입 기능 구현 그리고 계정과 닉네임에 대한 중복검사를 먼저 진행해 보겠다.MVC 패턴 적용유저가 정보를 입력하고 회원가입 버튼을 클릭하면 그 정보가 DB에 저장되는 것을 가장 먼저 구현해 보자. 아키텍쳐는 MVC 패턴을 선택하였고 흐름은 아래와 같다(draw.io를 이용해서 작성해 보았다). 클라이언트의 요청(request)이 뷰로 들어오면 컨트롤러와 모델을 거쳐 데이터베이스에 값을 저장하거나 조회해 ..
ep.06 템플릿 선정 & 프론트 작업(유효성 검사, 프로필 사진 업로드와 미리보기, 주소 API 연동)
·
개발/Team Project
템플릿 선정무료 템플릿 사이트팀 프로젝트를 진행하고 있는 현재, 필자 포함 팀원 모두가 프론트 엔드 기술보다 백엔드 기술을 더 재밌어한다. 그러다 보니 화면 구현 관련 팀 회의 진행 시 템플릿을 이용하고 기능 구현에 집중하자는 의견이 만장일치로 통했다. 여기저기 마음에 드는 템플릿 무료 사이트를 돌아다닌 결과 꽤나 마음에 드는 템플릿을 발견했다. theme wagon 이라는 사이트의 Titan이라는 템플릿을 사용하기로 했다! 다양한 페이지가 제공되고 있기에 조금의 노력을 더한다면 내가 원하는 페이지를 구현할 수 있을 거 같았다.로그인 / 회원가입, 마이페이지 구현필자는 로그인, 회원가입 기능을 구현하기로 했고 당연히 마이페이지까지 구현해야하기에 빠르게 사이트를 선택하고 수정하였다. 프론트 작업유효성 검사..
ep.05 Thymeleaf 설정 & GitHub를 이용한 프로젝트 공유
·
개발/Team Project
Thymeleaf SpringBoot는 JSP를 대체할 수 있는 다양한 뷰 템플릿 엔진을 지원한다. Thymeleaf, FreeMarker, Groovy, Mustache 등이 있으며 이러한 엔진들은 SpringBoot의 자동 구성 기능과 통합되어 개발의 편의성과 어플리케이션의 유지보수성을 높일 수 있다.* 템플릿 엔진은 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어이다. 하나의 예시로 회원의 정보를 화면에 나타내고 싶을 때 "이름: 홍길동, 나이: 19" 이와 같이 기재한다면 회원 정보가 변경될 때마다 수정해줘야한다. 이때, 태그에 text라는 속성과 값을 할당해주고 서버에서 이름과 나이라는 key를 이용하여 데이터를 템플릿에 넘겨준다. 템플릿 엔진은 이를 받아 HTML에 값..
ep.04 Git, GitHub(.gitignore), Dotenv(.env)
·
개발/Team Project
Gitgit에 대한 개념을 이해하기 위해서는 형상관리에 대해 먼저 알아야 한다.형상관리 (Software Configuration Management)    - 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것.    - 어떠한 문서나 파일이 변경된 경우, 그 내용과 원인을 기록하여 히스토리 관리하는 것을 말한다.    - 형상관리 종류로는 CVS(Concurrent Version System), SVN(SubVersion), Git이 있다.gitgit 공식 홈페이지에 이렇게 정의되어 있다.Git은 소규모 프로젝트부터 대규모 프로젝트까지 모든 것을 빠르고 효율적으로 처리하도록 설계된 무료 오픈 소스 분산 버전 제어 시스템입니다.Git은 배우기 쉽고 매우 빠른 성능을 갖춘 작은 설치 공간을 가지고 있..
ep.03 프로젝트와 데이터베이스 연결 (Oracle + mybatis)
·
개발/Team Project
Mybatis백엔드와 데이터베이스를 연결하기 위해 mybatis라는 기술을 사용할 예정이다. mybatis 기술에 대해 먼저 알아보자. 데이터베이스를 쉽게 다룰 수 있도록 도와주는 오픈소스 ORM(Object Relational Mapping)이다.* ORM: 어플리케이션과 데이터베이스 연결 시 어플리케이션 개발언어로 데이터베이스를 접근할 수 있게 해주는 툴> 사용방법의존성 주입 > mybatis(DataSource) 설정 > Mapper 인터페이스 & 테스트를 위한 코드 작성 > xml 작성 - 대표적인 장점1. 유연성 : SQL 쿼리를 직접 작성할 수 있으므로 매우 유연하다. (동적 쿼리 작성 가능)2. 간결성 : 데이터베이스의 쿼리문과 프로그래밍된 코드를 분리하기에 코드가 간결해진다. ( 유지보수성..
ep02. 프로젝트 셋업(feat. Spring Initializr)
·
개발/Team Project
프로젝트 셋업SpringBoot를 사용하여 프로젝트를 진행하고자 새로운 프로젝트를 생성하고자 한다. 필자는 spring initializr를 사용했다.Spring Initializr란??- SpringBoot를 기반으로 프로젝트를 생성해주는 사이트이다.- 프로젝트를 보다 쉽게 생성할 수 있게 도와준다.> Spring Initializr 위의 링크에 들어가면 아래와 같은 사이트가 나올것이다. (필자가 원하는 대로 선택, 기입한 상태이다.)Project: SpringBoot를 빌드하고 배포하는 방식이다.Language: 사용하고자하는 언어를 선택하면 된다.Spring Boot: 원하는 버전을 선택하면 된다. (SNAPSHOT은 데모버전. 버전이 높을수록 레퍼런스가 적다.)Group: 프로젝트의 도메인명을 기..
ep01. 프로젝트 컨셉 선정
·
개발/Team Project
a. 들어가며나라에서 지원되는 프로그램(국비지원)을 활용하여 Java기반 개발자 양성과정에 참여중이다.이 과정의 도착점은 여러명의 인원이 하나의 팀으로 모여 프로젝트를 진행하는 것. 팀 프로젝트이다.나는 4명으로 이루어진 팀에 속하게 되었고, 팀장으로 프로젝트를 이끌어가게 되었다. b. 프로젝트 컨셉 선정팀원 개개인의 의견을 수립하여 프로젝트 컨셉을 선정하기위해 채팅방을 개설한뒤, 아래와 같이 요청하였다.(국비지원 과정 중간에 팀 프로젝트를 진행해본 경험상 프로젝트 컨셉, 구현하고자 하는 기능들을 선정할 때혼자 계속 고민하는것 보다 회의를 통해 의견을 나누면서 스노우볼을 굴리는게 훨씬 수월했기 때문이다.)감사하게도 팀원분들께서 여러가지 의견을 생각해오셨고 생각보다 빠르게 프로젝트 방향이 잡혀나갔다. 개인..
김현중 (keemhing)
sesim === sosim