자바 스프링/부트 블로그 JPA 프로젝트

#20 기존 방식의 로그인

2022. 5. 12. 11:57

 

 

loginForm에서 <form action=...>에서 action부분을 삭제한다. 이 방식을 사용하지 않을 것이기 때문이다.

또 버튼을 form 밖으로 빼낸 다음

 

type을 btn-login으로 변경하고 user.js를 불러온다.

이전에 회원가입을 user.js에서 ajax로 처리한 방식과 같다고 생각하면 된다.

 

 

현재 user.js에는 회원가입을 처리하는 코드가 작성되어있는데

이를 복사 붙여넣기 한 다음 수정해서 로그인을 처리하는 코드도 작성하면 된다.

user.js

여기서부터

user.js

여기까지 복사를 한 후

, 를 찍고 그 아래에다 붙여넣기 해준다.

 

붙여넣기하고 다음과 같이 간단하게 수정한다.

저기 주석처리 되어있는 location.href = "/blog"; 에서 주석을 지워주자

그래야 블로그 홈화면으로 이동한다.

 

 

위에 다음과 같이 코드를 추가 작성한다.

참고로 id가 btn-login 이여야 하기 때문에

현재 loginForm.jsp에서 type=btn-login이라고 되어있는 코드를

다음과 같이 id=btn-login으로 바꿔준다.

 

 

그러면 이제 여기에 대한 컨트롤러를 만들러 가보자

UserApiController로 가자

 

현재 회원가입을 처리하는 코드가 있다.

로그인을 처리하는 코드도 작성해주자

 

UserApiController.java

다음과 같이 작성한다.

그리고 userService로 가서 로그인을 작성하면

 

이렇게 작성하면 되는데, 로그인의 경우 save가 아니라 다른 것이 필요하다.

userRepository에서 간편하게 회원가입에서 save를 꺼내서 쓴 것처럼 

로그인도 이런 함수가 내장되어 있어서 간편하게 꺼내서 쓸 수 있겠지? 싶었지만

그런거 없으니 직접 작성해서 써야한다고 한다.

 

userRepository로 가서 다음 코드를 작성한다.

JPA 네이밍 전략 (쿼리)인데, 

findByUsernameAndPassword 이 함수는 JPA에 없는 함수이다. 실제로 존재하지 않는 함수라는 것이다.

그런데 이름을 이렇게 findByUsernameAndPassword로 함수를 만들면 이 함수가 어떤 일을 하냐면

다음과 같은 쿼리가 자동으로 실행된다.

SELECT * FROM user WHERE username = ?1 AND password = ?2;

이 첫 번째 username = ? 의 물음표에는 username이 들어가게 되고,

password = ? 의 물음표에는 password가 들어가게 된다.

이게 스프링 JPA의 네이밍 전략이라는 것이다. (신기하다 ㄷㄷ..)

 

 

원래 방식인 네이티브 쿼리를 작성하는 방법도 있는데,

다음처럼 작성하는 것이다. 네이티브 쿼리를 사용할 것이 아니므로 주석처리해두고 알아만 두자

 

이제 함수를 작성했으니 다시 userService로 돌아가서 해당 함수를 써먹어보자!!

 

이렇게 만들었던 함수를 적용하였다.

그리고 코드를 다음과 같이 수정하자

 

UserService.java

return userRepository.find ...가 User를 리턴하게 되므로 void가 아니라 User를 기입한다.

 

UserService.java

 

UserApiController.java

 

이제 header.jsp에 jstl을 연동하자

 

header.jsp에 다음 코드를 붙여넣기해 jstl을 사용한다.

 

그리고 header.jsp를 다음과 같이 작성한다.

로그인이 안되어 있을 경우와 되어 있을 경우를 구분한 것이다.

 

 

그럼 이제 실행해보자

 

실행결과 :

현재 데이터베이스에 유저 daramG가 저장되어 있다.

이 계정으로 로그인해보자

 

 

+ 추가

 

스프링에선 다음과 같은 것도 가능하다.

UserApiController.java로 가서

UserApiController.java

해당 세션 객체를 잘라내기하고

 

여기다가 붙여넣기해서 @Autowired로 의존성을 주입해버리는 것도 가능하다.

이러면 세션 객체를 스프링 컨테이너가 빈으로 등록해서 가지게 된다.

필요하면 받아서 사용하면 된다.

 

다음엔 시큐리티 로그인에 대해 공부하고 진행하겠다.

 

 

참고자료 : https://youtu.be/GAy3my6Yroc

 

'자바 스프링 > 부트 블로그 JPA 프로젝트' 카테고리의 다른 글

#22 스프링 시큐리티2  (0) 2022.05.13
#21 스프링 시큐리티  (0) 2022.05.12
#19 ResponseDto 수정  (0) 2022.05.10
#18 회원가입 구현(REST API, Ajax)  (0) 2022.05.09
#17 회원가입을 위한 세팅(+jQuery, Ajax)  (0) 2022.05.09
'자바 스프링/부트 블로그 JPA 프로젝트' 카테고리의 다른 글
  • #22 스프링 시큐리티2
  • #21 스프링 시큐리티
  • #19 ResponseDto 수정
  • #18 회원가입 구현(REST API, Ajax)
daramG
daramG
dotori Java
daramG
다람쥐의 개발 블로그
daramG
전체
오늘
어제
  • 분류 전체보기 (193)
    • Java 코딩테스트 공부 (67)
      • Java 알고리즘 공부 (37)
      • Java 백준 문제풀이 (27)
      • Java 코테 나만의 팁 (3)
    • SQL Study (0)
      • Programmers SQL 문제풀이 (0)
      • SQLP 준비 (0)
    • 웹 개발 지식 정리 (0)
      • Servlet (0)
      • Java 정리 (0)
    • 자바 스프링 (45)
      • 스프링 공부 (4)
      • 스프링 게시판 프로젝트 (6)
      • 부트 블로그 JPA 프로젝트 (30)
      • react & springboot (5)
      • 스프링 오류창고 (0)
      • 리액트 + 스프링 프로젝트 (0)
      • pf (0)
      • pfError (0)
    • React (6)
      • React 정리 (3)
      • React 오류 창고 (3)
    • C++ 코딩테스트 공부 (중단) (20)
      • c++ 백준 문제풀이 (15)
      • c++ 알고리즘 공부 (5)
    • Unity (3)
      • Unity 공부 (3)
    • WebRTC (2)
      • WebRTC 강의학습 정리 (0)
      • WebRTC 프로젝트 (1)
    • 김영한님의 스프링 강의 학습 (10)
      • 스프링 강의 목차 (1)
      • 인텔리제이 & 스프링 기초 (1)
      • 스프링 핵심 원리 (8)
    • 전공 지식 정리 (40)
      • interview (0)
      • Java (0)
      • 운영체제 (4)
      • 데이터베이스 설계 (10)
      • 소프트웨어 공학 (3)
      • 유닉스 (14)
      • 디지털 논리회로 (0)
      • 인공지능 (7)
      • js (0)
      • etc (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 김영한의 스프링 핵심 원리
  • 노마드코더의 zoom클론코딩
  • Java 백준 문제풀이
  • java
  • 무서운 이야기
  • React&Spring 강의수강
  • 스프링 프로젝트
  • 운영체제
  • 김영한 스프링 입문
  • 부트 jpa 게시판 프로젝트
  • 스프링부트 블로그 프로젝트
  • 스프링 공부
  • Java 코테 나만의 팁
  • 인공지능
  • 디지털 논리회로
  • 데이터베이스 설계
  • 스프링부트 프로젝트
  • 유닉스
  • java 알고리즘
  • Unity 공부
  • 코테 알고리즘
  • C++ 알고리즘
  • 김영한 스프링 강의
  • 백준 c++

최근 댓글

최근 글

hELLO · Designed By 정상우.
daramG
#20 기존 방식의 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.