해당 글은 Spring으로 구현한 프로젝트를 SpringBoot로 리팩토링 하는 과정을 담은 글입니다.
이번 시간에는 사용자와 관리자로 로그인 했을 때 각자 다른 메뉴가 노출시키려 합니다.
1. MEMBER Entity에 권한 컬럼 추가
@Entity
@Data
@Table(name = "T_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;
@Column(name = "M_AUTH")
private String mAuth;
private String country;
private String eName;
private String kName;
private String birth;
private String phone;
private String email;
private String insDate;
private String modDate;
}
2. DB에 권한 데이터 추가
3. 로그인 성공 시 LoginController에 회원 정보로 세션값 저장
@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;
}
4. header.html 에서 "loginMember" 세션값 불러와서 처리
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<!--headerFragment 선언-->
<div th:fragment="headerFragment">
<header>
<a th:href="@{/main}"><img id="logo" th:src="@{/images/logo.png}"/></a>
<nav id="top_menu">
<th:block th:if="${session.loginMember != null}">
<a th:href="@{/login/logout}">로그아웃</a> | <a th:href="@{/member/memberInfo}">마이페이지</a>
</th:block>
<th:block th:if="${session.loginMember == null}">
<a th:href="@{/login/loginForm}">로그인</a> | <a th:href="@{/member/addMember}">회원가입</a>
</th:block>
</nav>
<div class="dropmenu">
<ul>
<li><a th:href="@{#}">소개</a></li>
<th:block th:if="${session.loginMember != null}" th:with="data=${session.loginMember.mAuth}">
<th:block th:if="${#strings.equals(data,'USER')}">
<li><a th:href="@{/rsvList}" id="current">예약</a></li>
</th:block>
<th:block th:if="${#strings.equals(data,'ADMIN')}">
<li><a th:href="@{/roomList}">객실관리</a></li>
<li><a th:href="@{/reservManageList}">예약관리</a></li>
</th:block>
</li>
</th:block>
<li><a th:href="@{#}">공지사항</a></li>
</ul>
</div>
</header>
</div>
</html>
1. th:if="${session.loginMember != null}"
: loginMember 세션값이 비어있지 않을 때만 예약, 객실관리, 예약관리 메뉴노출
2. th:with="data=${session.loginMember.mAuth}"
: data 변수에 loginMember의 권한값 저장
3. th:if="${#strings.equals(data,'USER')}"
: data 값이 'USER'와 동일한지 체크
4. th:if="${#strings.equals(data,'ADMIIN')}"
: data 값이 'ADMIN'과 동일한지 체크
'Spring > SpringBoot' 카테고리의 다른 글
[SpringBoot] 호텔예약사이트 - 관리자 객실 등록 (0) | 2024.03.30 |
---|---|
[SpringBoot] 호텔예약사이트 - 관리자 객실조회 (0) | 2024.03.25 |
[SpringBoot] 호텔예약사이트 - 로그인 구현 (0) | 2024.03.10 |
[SpringBoot] 간단한 게시판 생성_페이징처리 (0) | 2024.01.20 |
[SpringBoot] 간단한 게시판 생성_첨부파일 업로드 (0) | 2024.01.15 |