파이널 프로젝트_로그인, 로그아웃(Spring Boot, Session )
Admin Controller
GET 방식 호출 : 로그인 페이지로 이동
POST 방식 호출 :
사용자가 입력한 아이디와 비밀번호를 String 타입으로 받고
사용자 세션을 관리하기 위해서 HttpSession 객체를 받는다
Admin admin = adminService.login(id, password)
입력받은 아이디와 비밀번호를 Service의 login 메소드로 전달한다
로그인을 성공하면 Admin 객체를 반환, 실패할 경우 null을 반환
if(admin != null){
session.setAttribute("admin", admin);
} else {
return "redirect:/admin/login?error";
}
return "redirect:/admin/home";
}
이 조건문은 로그인이 성공했는지 확인한다
성공했을 경우 HttpSession 객체의 setAttribute 메소드를 사용하여
세션에 "admin"이라는 이름으로 Admin 객체를 저장한다
이를 통해서 로그인한 사용자의 정보를 다른 페이지에서도 사용자의 로그인 상태를 유지할 수 있다
로그인 처리 결과에 따라서 리다이렉트 처리를 하는데
성공시에는 /admin/home 경로로 리다이렉트해서 관리자 홈페이지로 이동
실패시에는 로그인 페이지로 리다이렉트 하면서 쿼리 파라미터에 error를 추가한다
error가 반환되었을 경우에는 위와 같은 메세지가 출력이 된다
Admin Service - login메소드
login 메소드는 매개변수로 사용자가 화면에 입력한
아이디 값과 비밀번호 값을 String 타입으로 받는다
Admin findId = adminMapper.getAdminId(id)
데이터 베이스에서 id에 해당하는 값을 찾고
findId 변수에 저장한다
String findPw = (findId == null) ? "" : findId.getPassword()
finId 변수가 null일 경우(입력한 아이디가 데이터 베이스에 존재하지 않을때)
빈 문자열을 findPw 변수에 저장한다
null이 아닐 경우엔 데이터 베이스에 입력되어 있는 비밀번호 값을 저장한다
// DB에 id가 존재하지 않거나 저장된 비밀번호가 일치하지 않는 경우를 체크
if((findId == null) || passwordEncoder.matches(password, findPw) == false) {// 입력된 비밀번호와 저장된 비밀번호를 비교하는 메소드
return null;
}
return findId;
if((findId == null) || passwordEncoder.matches(password, findPw) == false)
이 조건문은 두 가지를 확인
데이터베이스에서 아이디를 기반으로 관리자 정보를 찾지 못했는지(findId == null)
입력된 비밀번호와 데이터베이스에 저장된 비밀번호가 일치하지 않는지
(passwordEncoder.matches(password, findPw) == false)
passwordEncoder.matches(password, findPw) 메소드는 입력된 비밀번호와
저장된 비밀번호를 비교하는 방식
return findId
만약 아아디가 존재하지 않거나 비밀번호가 일치하지 않는 경우에는
null 값을 반환한다.
일치할 경우에는 Admin 객체를 반환한다
matches(a, b) 메소드 설명
a : 사용자가 입력한 비밀번호
b : 데이터베이스에 저장되어 있는 해시된 비밀번호
matches 메소드는 a 매개변수를 내부적으로 해시 처리한 후,
b 매개변수와 비교한다
비교해서 값이 일치하면 true를 반환, 그렇지 않으면 null을 반환
매퍼파일들 - Mapper 인터페이스 , xml
getAdminId(String id)
<select id="getAdminId" resultMap="AdminResultMap" parameterType="String">
SELECT
ADMIN_ID, ADMIN_PW, ADMIN_EMAIL, ADMIN_TEL
FROM
ADMIN
WHERE
ADMIN_ID = #{value}
</select>
아이디를 입력해서 해당하는 아이디의
아이디, 비밀번호, 이메일, 전화번호를 불러온다
로그아웃
session.invalidate( )
invalidate( ) 메소드는 세션에 저장된 모든 객체를 제거하고 무효화하는 역할을 수행
세션을 파기하고 로그인 페이지로 이동시킨다