본문 바로가기

Programming/Spring Security

(9)
[Spring Security][회원가입 및 로그인 예제 9/9] 마무리 들어가며... 마지막으로 설정 부분 및 초기 SQL 관련 부분의 내용을 끝으로 해당 프로젝트의 전체 글을 마무리 하고자 합니다. Table of Contents application.yml, data.sql application.yml, data.sql ● application.yml 어플리케이션의 설정 부분입니다. 경로는 "src/main/resources"에 있으며 초기에는 "application.properties"로 되어 있었을 것입니다. 무엇을 사용하여도 무방하나 전 yaml 포맷을 선호하여 파일명을 변경하였습니다. 아래는 전체 설정 내요입니다. # ================================================================== # Data Source #..
[Spring Security][회원가입 및 로그인 예제 8/9] View 구현 들어가며... 앞 글에서 Controller까지 구현하였으므로 설정 부분을 제외하고 Back End 부분은 끝난 상태입니다. 이번 글에서는 Front End 코드만 대략 살펴볼 것입니다. 사용된 기술은 Thymeleaf, Bootstrap 정도입니다. Bootstrap에 대한 설명은 홈페이지의 도큐먼트가 워낙 잘 나와 있으니 아래 링크를 참조하시면 될 듯 합니다. https://getbootstrap.com/docs/4.4/getting-started/introduction/ Introduction Get started with Bootstrap, the world’s most popular framework for building responsive, mobile-first sites, with Boo..
[Spring Security][회원가입 및 로그인 예제 7/9] Controller 구현 들어가며... 이번 글에서는 Controller쪽 코드를 살펴보도록 하겠습니다. 샘플 화면이다 보니 회원가입 부분을 빼고는 대부분 요청 파일 패스와 실제 html파일을 연결하는 정도가 전부이며 HTTP error가 발생했을 경우 Browser에 기본 탑재된 에러 UI가 아닌 customizing하는 방법에 대해서도 알아보도록 하겠습니다. Table of Contents Controller 구현 ErrorController 구현 Controller 구현 ● MemberController.java package com.demo.security.controller; import javax.annotation.Resource; import javax.validation.Valid; import org.slf4j..
[Spring Security][회원가입 및 로그인 예제 6/9] AuthenticationSuccessHandler & AuthenticationFailureHandler 구현 들어가며... 로그인 성공 또는 실패 시 상황에 맞게 좀 더 세부적으로 수행해야 할 작업들이 있을 수 있습니다. 예를 들면 로그인 실패 시 실패 원인을 UI에 전달하여 화면에 보여주고 싶을 수도 있고 로그인이 일정한 회수 이상 실패할 경우 계정잠금을 해야 할 경우도 있을 수 있습니다. 반대로 로그인 성공 시에는 앞서 저장한 로그인 실패 회수를 초기화하거나 인증권한에 따라 서로 다른 페이지를 보여주고 싶을 수도 있습니다. 앞서 포스팅한 WebSecurityConfigurerAdapter에서도 로그인 성공 시 또는 실패 시 보여줄 파일 패스를 설정할 수도 있으나 위에서 언급한 좀 더 세부적인 작업을 하고자 할 경우에는 Spring Security에서 마련해논 AuthenticationSuccessHandle..
[Spring Security][회원가입 및 로그인 예제 5/9] Web Security Configuration 설정 들어가며... 이번 시간에는 Spring Security Configuration 에 대해서 알아보겠습니다. web.xml 또는 Spring MVC의 security-context.xml 에 접속할 페이지의 권한 설정 등을 할 수도 있으나 이런 모든 설정들을 Java 코드 기반으로도 할 수 있습니다. Java 코드 방식을 사용하려면 Spring Security에서 이미 만들어 놓은 "WebSecurityConfigurationAdapter"를 상속받아 필요한 기능들을 사용자가 구현하여 주면 됩니다. 물론 아무런 설정을 하지 않으면 Spring Security의 디폴트 형상으로 동작할 것입니다. Table of Contents SecurityConfig.java 구현 WebSecurityConfigurat..
[Spring Security][회원가입 및 로그인 예제 4/9] Service Layer 구현 들어가며... 지난 글에서는 Repository 부분을 구현하였습니다. 보통 Repository나 Dao(Data Access Object)의 경우는 SQL과 매핑되는 인터페이스들을 정의하고 이렇게 매핑된 SQL문들을 이용하여 실제 필요한 데이터들에 후처리 또는 Policy(정책)들을 적용시키고자 할 때 Servie Layer를 두개 됩니다. 간단한 작업의 경우에는 Repository에서 반환되는 데이터만으로도 충분하지만 번거롭더라도 되도록이면 Repository(또는 Dao)와 Service 를 분리하여 구현하는 습관을 가지는 것이 좋다고 봅니다. 이번 글에서는 Account와 Role과 관련된 Repository를 이용하는 Service Layer를 구현하고 Spring Security의 UserDe..
[Spring Security][회원가입 및 로그인 예제 3/9] Repository 생성 (JPA : Query Mapping) 들어가며... 이전 글에서 테이블을 매핑할 Model Object를 생성하였습니다. 이번 글에서는 JpaResository를 이용하여 물리적인 데이터베이스의 ACCOUNT, ROLES 테이블에서 Query를 수행한 후 반환되는 데이터를 Account, Role Object Class에 담아주는 역할을 하는 Repository 부분을 살펴보도록 하겠습니다. 추가적인 SQL을 추가하지 않는 이상 솔직히 구현하는 부분은 별다른게 없으나 복잡한 SQL문을 수행하기 위해서는 Hibernate(Spring Data JPA)에서 정의한 사용법을 익히는 것이 중요합니다. ※ 정리 : Model을 생성하는 작업이 Entity Class와 데이터베이스의 테이블을 Mapping하는 작업이였다면 Repository 생성부분은..
[Spring Security][회원가입 및 로그인 예제 2/9] Model 생성 (JPA : Object Mapping) 들어가며... Form 기반 Spring Security 연재글의 첫번째로 Database에 저장된 데이터와 Mapping되는 Object인 Account, Role 두개의 class를 구현하도록 하겠습니다. Database연동은 MyBatis가 아닌 Spring Data JPA를 사용하였습니다. Table of Contents JPA란? 의존성 라이브러리 추가 Account.java 구현 Role.java 구현 JPA란 Java Persistence API의 약자로 간략하게 정의하면 관계형 데이터베이스의 데이터를 Object로 Mapping하는 기술 명세라고 생각하면 될 듯 합니다. JPA는 Object Mapping에 대한 기술 명세만 제공하며 이를 바탕으로 실제로 기능을 구현한 라이브러들이 있는데 ..