728x90
반응형

boot 11

[로그인 기능 만들기] 10. login 인증(2)

이전 글에서는 login을 위한 controller, service, dto, domain 패키지 등을 구성하고 실제 로그인이 되었는지를 리턴하는 코드를 작성하였다.이번에는 그 서버에 알림을 띄우는 기능을 이용해1. 로그인 성공 -> 개인 페이지로 넘어감2. 로그인 실패 -> "로그인 실패" 알림 -> 다시 로그인 페이지로 돌아감이렇게 두 가지 방식으로 기능 구현을 해보려한다.2. 알림 띄우기먼저, loginController의 loginForm() 메소드를 수정하여로그인 성공 시에는 testThymeleaf.html이 뜨도록 수정하였다. // submit login information @PostMapping("/login") public String loginForm(@ModelAtt..

개발/Spring Boot 2024.06.21

[로그인 기능 만들기] 9. login 인증(1)

login을 할 때 id, pw를 입력받게 되고, 이게 제대로 된 아이디인지 체크하기 위해서는 여러 방법이 있다.그 중에서도 쉬운 것부터, 차근차근 진행하겠다. 제일 먼저 시도할 것은, db에 id, pw를 저장해두고 로그인 시 받은 id,pw와 비교하는 것이다. 만약 일치하는게 있으면 "로그인 되었습니다!"라는 알림과 함께 test page로 넘어가고,일치하는게 없으면 "아이디나 비밀번호가 틀렸습니다"라는 알림과 함께 다시 login page로 넘어간다. 1. id, pw 검증우선, id, pw와 비교하는 것을 먼저 구현해보자.이 과정은 service 패키지에서 구현된다. 우선, service단에서 사용할 dto를 생성한다.그 전에, builder pattern 사용을 위해 domain 패키지의 Use..

개발/Spring Boot 2024.05.30

[로그인 기능 만들기] 8. JPA를 사용한 DB 구현(2)

이전에 Configuration, domain, dto 패키지로 구분한다고 썼는데, 조금 수정 및 추가할 부분이 생겨 다시 글을 적는다.. 먼저, JPA 사용을 위해 패키지를 크게 구분하면, 1. domain 패키지2. controller 패키지3. DTO 패키지4. service 패키지 이렇게 네 가지로 나눌 수 있다.(configuration같은 부분은 부가적인 부분이니 이번 글의 설명에서는 제외) 1. domain 패키지  1.1. Entity 클래스 : DB Layer로, 실제 DB 테이블과 매칭될 클래스이다. 쿼리를 직접 날리는 대신 사용한다.                                 실제 DB 테이블 이름을 매칭한다.                                 V..

개발/Spring Boot 2024.05.27

[로그인 기능 만들기] 7. website login-form 만들기(3)

저번에 했던 빈 object를 만들어 thymeleaf의 form을 이용해 서버로 값을 넘겨주는 방식은,검증에 도움이 된다고 한다.또한, 많은 값을 지정해야할 때에도 이렇게 간단하게 표기할 수 있다는 장점이 있다. 저번에 로그인 페이지에서 아이디와 비밀번호를 입력할 수 있는 form을 만들었고,이번에는 서버로 제출해 서버에 입력되는걸 확인하는 과정까지 해보려한다. 이전에, POST 방식으로 submit하는 부분까지 html로 만들었다.그럼, 이 post 방식으로 서버에서 객체 정보를 받아올 수 있도록 해야한다.이번에는 다시 controller 패키지에 새로운 controller 코드를 작성해야 한다. 여기서는 @ModelAttribute를 사용한다.@ModelAttribute는 Model 객체를 생성해 ..

개발/Spring Boot 2024.05.24

[로그인 기능 만들기] 6. website login-form 만들기(2)

thymeleaf를 spring boot에서 이용해 다루는 법을 지난번에 테스트 해봤으니, 이번에는 진짜 내가 쓸 form까지 만들어보자. 우선, 전과 같이 controller 패키지에 loginController.java를 추가한다."localhost:8080/main" 에 접속하면 웹사이트의 메인 페이지가 뜨고,"localhost:8080/login" 에 접속하면 로그인 창이 뜨게 된다. (디자인은 크게 신경쓰지 않고 만들었다는 점...!)1. Main Page, Login Page Controllermain으로 접속하면 위와 같이 메인 페이지로 접속된다.여기서 login 버튼을 만들어 login page로 넘어가게 만들 예정이다.2. Login button(page 이동)로그인 버튼을 만들기 위해서..

개발/Spring Boot 2024.05.24

[로그인 기능 만들기] 5. website login-form 만들기(1)

맨 처음, 로그인 기능을 만드는 방법은 크게 두 가지를 언급했다.첫번째는 spring boot 자체에서 로그인 기능을 구현하는 방법.두 번째는 OAUTH를 사용해 외부 로그인 api를 활용하는 방법. 우선, 첫 번째 방법으로 구현할 생각이다.(둘다 해보긴 할거임!)spring boot 자체에서 로그인 기능을 구현하는 방법도 크게 두 가지로 나뉜다. 먼저, JWT을 이용하는 방법. 이건 복잡하지만 활용성이 높은 것 같다.다음은, spring security를 이용하는 방법. 우선은 이게 쉬워보여서, 이걸 한 후 이해도를 높여서 JWT도 해볼까 싶다. 이걸 하기 전에, 간단하게 html로 웹 사이트에서 아이디 비번 제출하여 로그인하는 란을 만들고,메인 화면과 이것저것..추가해보려 한다. spring boot..

개발/Spring Boot 2024.05.23

[로그인 기능 만들기] 4. JPA를 사용한 DB 구현(1)

spring boot에서 제공하는 jpa를 사용하여 h2 인메모리 구조로 db를 구현할 것이다.이를 위해 크게 configuration, domain, dto 패키지를 생성하였다.1. configuration packageconfiguration에서는 jpaAuditingConfiguration 클래스를 생성하여 jpa auditing을 가능하도록 하였다.(즉, 생성/수정 시간 자동 설정 기능을 사용하도록 설정)- JpaAuditingConfiguration.java코드더보기package com.example.loginserver.configuration;import org.springframework.context.annotation.Configuration;import org.springframewo..

개발/Spring Boot 2024.05.09

[로그인 기능 만들기] 3. 비즈니스 로직

로그인 기능이라는게 몹시 전형적인 서비스 로직을 가지고 있다고 생각해, DB 구조만 정하고 개발에 착수하려 했다.그런데 아무리 전형적이어도 내 머릿속에서만 가지고 있으면 알아보기 힘들다는 피드백을 받아,동작 흐름을 그려보았다.(나중에 변경될 수 있다는 점!)(flow chart나 usecase diagram 등을 정확히 배운 것은 아니라서, 흐름 표현 외적인 세세한 표현은 틀릴 수 있음!) 1.1. 서버에 id, pw를 입력해 회원가입하는 상황 User가 화면에서 ID, PW를 입력하고, 기본 정보(이름, 전화번호, 이메일 등)를 작성하면 유효성을 체크하여 새로운 회원을 등록한다.기본 정보 중 전화번호나 이메일을 이용해 본인인증을 받고,본인 인증된 정보로 중복 가입을 막는 방식을 취하고 싶은데, 사실 이..

개발/Spring Boot 2024.05.03

[로그인 기능 만들기] 2. DB 기획(2)

이전까지의 DB 구조는 다음과 같다.일단 정말 바보같은 실수를 했다는 것을 발견!이렇게 되면 여러 외부 사이트 인증을 사용할 수 있도록 하겠다는 기획이 무색하게,각 유저당 하나의 인증 방법으로만 로그인 가능하게 된다.one to one의 관계를 가지게 되는 것이다!!one to many의 관계가 성립하려면, UserInfo에서 AuthId를 FK로 가지는 것이 아니라,AccountAuth에서 UniqueId를 FK로 가지도록 해야 한다.수정한 그림은 다음과 같다.  AccountAuth 테이블에 User와 인증 정보가 함께 추가되므로 유저와 인증수단이 여럿으로 매칭될 것이다. 아래는 수정된 테이블 정보. ◎ table : user의 정보를 담고있는 테이블Column NameTypeDescriptionU..

개발/Spring Boot 2024.05.03

[로그인 기능 만들기] 1. DB 기획(1)

사실 이 프로젝트의 핵심은 서버 로직 구현이기 때문에, DB 구조는 가장 단순하게 만드는 것을 목표로 잡았다.추후 기능이 추가되고, 필요해진다면 제대로 따로 DB서버까지 구현해볼 예정.따라서 지금은 Spring DATA JPA, H2 in-memory DB를 사용할 것이다. DB 구조는 다음과 같다. ◎ table : user의 정보를 담고있는 테이블Column NameTypeDescriptionUniqueId(PK)Long Intauto increment. 유저 아이디를 직접 PK로 사용하는 것은 보안상, 조회 상 문제가 될 수 있기 때문에 따로 유저를 구분할 수 있는 PK로서 숫자를 저장해 사용함CreatedDateDate생성된 시간을 JPA Audit 기능을 사용해 자동으로 저장LastModifi..

개발/Spring Boot 2024.05.02
728x90
반응형