해당 글은 Spring으로 구현한 프로젝트를 SpringBoot로 리팩토링 하는 과정을 담은 글입니다.
이번 시간에는 간단하게 로그인 기능 구현을 하려고 합니다.
1. 세션 값 없을 시 로그인 | 회원가입 버튼 노출
2. 로그인 성공 후 세션 값 등록
3. 세션 값 있을 시 로그아웃 | 마이페이지 버튼 노출
1. Entity 선언
@Entity
@Data
@Table(name = "MEMBER")
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
@Column(name = "M_ID")
private String mId;
@Column(name = "M_PW")
private String mPw;
}
@Entity : 객체임을 명시해주고 테이블과 매핑 (name 지정 안 할 시 기본값은 클래스 명)
@Table : entity와 매핑할 테이블 지정( name : 매핑할 테이블 이름 지정)
@Id : 식별자 필드로 , 엔티티 필드를 테이블이 기본키에 매핑하는 역할
@GeneratedValue
- 주키의 값을 위한 자동 생성 전략 명시, 선택적 속성 : generator, strategy
- strategy = GenerationType.IDENTITY : 기본키 생성을 데이터 베이스에 위임.
@Column : 데이터베이스 테이블과 필드를 매핑하기 위해 사용 ( name : 필드와 매핑할 테이블 컬럼명)
2. Service 선언
@Service
public class SonorousMemberService {
@Autowired
SonorousMemberRepository sonorousMemberRepository;
public Member getLogin(String mId){
Member member = sonorousMemberRepository.findBymId(mId);
return member;
}
}
getLogin 메서드에서 mid값을 받아 회원 정보를 조회하기 위해
sonorousMemberRepository.findBymId의 인자로 전달
3. Repository 선언
@Repository
public interface SonorousMemberRepository extends JpaRepository<Member, Integer> {
Member findBymId(String mId);
}
JpaRepository<Member, Integer> : 어떤 Entity인지, pk는 어떤 타입인지 명시
SonorousMemberRepository에 findBymId 메서드를 만듬
-> 아이디로 회원 정보 조회 (select * from member where mId = ?)
4. controller 선언
@Controller
public class SonorousLoginController {
@Autowired
private SonorousMemberService sonorousMemberService;
@GetMapping("/login/loginForm")
public String loginForm(){
return "login/loginForm";
}
@PostMapping("/login")
public String login(@ModelAttribute Member member,
Model model,
HttpSession session) throws Exception{
String message = "";
boolean isError = true;
String viewPage = "common/message";
String mId = member.getMId();
Member loginMember = sonorousMemberService.getLogin(mId);
if(loginMember != null && member.getMPw().equals(loginMember.getMPw())){
session.setAttribute("loginMember", loginMember);
message = member.getMId()+" 님 환영합니다.";
isError = false;
} else {
message = "로그인에 실패하였습니다. 아이디와 비밀번호를 확인해주세요.";
isError = true;
}
model.addAttribute("isError", isError);
model.addAttribute("message", message);
model.addAttribute("locationURL", "/main");
return viewPage;
}
}
sonorousMemberService의 getLogin을 호출하여 회원정보를 조회해옴.
1) 로그인 성공 시
세션값에 회원정보를 넣고 메세지 값과 에러 여부를 false로 세팅
2) 로그인 실패 시
메세지값과 에러 여부를 true로 세팅
그 후 viewPage를 리턴
'Spring > SpringBoot' 카테고리의 다른 글
[SpringBoot] 호텔예약사이트 - 관리자 객실조회 (0) | 2024.03.25 |
---|---|
[SpringBoot] 호텔예약사이트 - 사용자, 관리자 메뉴 구분 (0) | 2024.03.20 |
[SpringBoot] 간단한 게시판 생성_페이징처리 (0) | 2024.01.20 |
[SpringBoot] 간단한 게시판 생성_첨부파일 업로드 (0) | 2024.01.15 |
[SpringBoot] 간단한 게시판 생성_글수정 (0) | 2024.01.15 |