[프로젝트]중고 경매 사이트 - 제시요(사용자 인증을 통한 헤더의 변화)

기능 구현
송송승현's avatar
Dec 24, 2024
[프로젝트]중고 경매 사이트 - 제시요(사용자 인증을 통한 헤더의 변화)

화면

notion image
notion image
notion image
 

JavaScript

headerLoad(); async function headerLoad(){ let page = document.querySelector(".t1-auth-links"); let userDetailes = await getAuthentication(); if(userDetailes==null){ page.innerHTML=` <div> <a href="/login-form">로그인 / </a> <a href="/join-form"> 회원가입</a> </div> ` }else { if (userDetailes.role === "ROLE_USER") { page.innerHTML = ` <div> <a href="/logout">로그아웃 / </a> <a href="/s/user-info/">마이페이지</a> </div> `; } else if (userDetailes.role === "ROLE_ADMIN") { page.innerHTML = ` <div> <a href="/logout">로그아웃 / </a> <a href="/admin/category">관리자페이지</a> </div> `; } } } async function getAuthentication(){ let url = `/api/v1/authentication`; let response = await fetch(url); let responseData = await response.json(); let userDetails = responseData.data; return userDetails; }

Controller

// 인증 @ResponseBody @GetMapping("/api/v1/authentication") public ResponseEntity<?> getUserDetails(@AuthenticationPrincipal UserDetails userDetails) { CommonResp<UserDetails> resp = CommonResp.success(userDetails); return new ResponseEntity<>(resp, HttpStatus.OK); }

해설

💡
Spring Security를 활용하여 로그인 정보를 가지고 있는 @AuthenticationPrincipal을 사용해
유저의 정보를 인증함
인증된 정보가 없다면 로그인/회원가입을 표시
인증된 정보가 있다면
유저의 권한을 확인
권한이 USER이라면 로그아웃/ 마이페이지 표시
권한인 ADMIN이라면 로그아웃/ 관리자페이지로 표
Share article

송승현의 블로그