Java 22

Spring Security를 활용한 사용자 권한 기반 접근 제어

저번 글의 Spring Security를 활용한 로그인 이후로 이번에는 관리자 페이지를 구현하면서 Role에 따라 접근 가능한 페이지/기능을 제어하는 방법을 공부하고 기록해 보려고 합니다.. 오류만 안난다면.... 금방 끝나겠지!? +++ 이전 게시글에서 수정 +++MemberController에서 "/main" 매핑을 삭제, MainController 생성package com.demo.controller;import org.springframework.security.core.Authentication;import org.springframework.security.core.context.SecurityContextHolder;import org.springframework.stereotype.Cont..

개인 공부 2024.12.24

Spring Security를 활용한 로그인!?!?

예전에 한 회사에서 면접을 볼 때 "Spring Security 사용해 본 적이 있나요?" 라고 했을 때 없다고 했었는데 개인 공부를 하면서 웹 개발 중 제일 처음 배웠던 로그인 기능을 Spring Security에 대해서 공부도 할 겸 활용해 보겠습니다..(그 때, 사용한 적 없다고 했지만 어떤 기능인지 알고 잘 대답했더라면 합격 했을 수도 있었을 것 같네....) Spring Security???Spring 기반 애플리케이션에서 인증(Authentication)과 권한 부여(Authorization)를 처리하는 강력한 보안 프레임워크.ㅇㅐ플리케이션을 외부 공격으로부터 보호하고, 사용자의 접근 권한을 제어하는데 필요한 다양한 기능을 제공합니다. Spring Security의 주요 기능인증(Authent..

개인 공부 2024.12.21

MVC 패턴이 뭔데...

SpringBoot를 통한 프로젝트를 하다보니 내가 제대로 이게 어떤 기능이고, 어떻게 사용하는지에 대한 설명을 제대로 하지 못하는 모습을 보고 혼자 공부도 하고, 면접 준비를 위한 글입니다요.... 초보 개발자로 살아남기가 많이 힘드네요 ㅠ_ㅠ MVC가 뭔데...  Model-View-Controller 랍니다!!! 이건 기본이겠죠..? 아무튼 이렇게 나눠서 구현하는 디자인 패턴이랍니다. application의 구성 요소를 분리하여 관리하기 쉽고, 코드의 유지보수성을 높이는데 도움을 준다는데.. 말이 너무 어렵네요. Model : 애플리케이션의 데이터와 비지니스 로직을 처리하며, DB(데이터베이스)와 상호작용을 하거나, 로직을 수행하는 역할.View : 사용자에게 데이터를 시각적으로 표현. Html, ..

개인 공부 2024.12.18

Spring Boot - 국립 도서관 Open API를 활용한 도서 검색 구현

이번 글에서는 국립 도서관의 Open API를 활용하여 도서 검색 및 결과를 웹 페이지에 나타내는 방법을 소개해 볼게요. 부족한 실력 탓에 설명이 미흡합니다... 이해해주세요 :) *** 지난번 글에서 api의 key에 대한 설명이 없었던 것 같아서 여기에 작성해 볼게요 ***저는 api key를 application.properties에 따로 저장해서 사용했습니다. library.api.key : 국립 중앙 도서관의 api key.aladin.api.key : 알라딘 api key (이건 여기서 사용하지 않아서 필요 없어요!!!) ItemDTO (저번과 똑같아요 수정할 필요 없습니다..)package com.demo.dto;import com.fasterxml.jackson.annotation.Json..

Spring Boot - 국립 도서관 Open API를 활용한 사서 추천 도서 목록 구현

이번 글에서는 국립 도서관의 Open API를 활용하여 사서가 추천하는 도서를 가져오고, 웹 페이지에 표시하는 방법을 소개해 볼게요. 부족한 실력 탓에 설명이 미흡합니다... 이해해주세요 :) API에서 반환데는 데이터를 매핑할 DTO 작성package com.demo.dto;import jakarta.xml.bind.annotation.XmlElement;import jakarta.xml.bind.annotation.XmlRootElement;import lombok.Getter;import lombok.Setter;@Getter@Setter@XmlRootElement(name = "item")public class BookRecommendation { private String drCodeNam..

Spring Boot - 관리자 페이지 (5)

지난 글에 이어서 관리자 페이지에서의 회원 질문 관리에 대한 기능 구현과 설명을 이어가겠습니다.부족하더라도 이해해주세요. :) adminMain.html 질문 관리 고정 질문 회원 질문 회원 질문 링크 클릭 시 이전 글에서 미리 만들어 둔 Controller 처리로 회원 질문 페이지로 이동.// 회원질문 페이지@GetMapping("/admin-customer-qna")public String customerQuestions(HttpSession session, Model model) { Member admin = (Member)session.getAttribute("admin"); if(admin == null) { model.addAt..

Spring Boot - 관리자 페이지 (4)

이번 글에서는 관리자 페이지에서의 사이트의 질문(Q&A)관리에 대한 기능설명과 코딩을 만들어 보겠습니다.부족하더라도 좋게 봐주세요. :) ===== 질문 관리 =====Qna 클래스 생성package com.demo.domain;import java.util.Date;import org.hibernate.annotations.ColumnDefault;import org.hibernate.annotations.DynamicInsert;import org.hibernate.annotations.DynamicUpdate;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.Gene..

Spring Boot - 관리자 페이지 (2)

저번글의 관리자 로그인 및 로그아웃 구현에 이어서 이번 글에서는 회원관리에 대해서 기능을 구현하고, 설명하려고 합니다. 부족해도 좋게 봐주세요 :) adminMain.html에서 작성해 놓은 회원 관리 회원리스트 a th:href="@{/admin-customer-list}">회원리스트a> a링크를 통해서 /admin-customer-list URL로 GET 요청이 전송됩니다. // 회원관리 페이지@GetMapping("/admin-customer-list")public String allCustomerList(HttpSession session, Model model) { Member admin = (Member)session.getAttribute("admin");..

Spring Boot - 관리자 페이지 (1)

관리자 페이지는 회원 관리, 공지사항 작성 및 수정, 질문 관리 등의 기능을 통해 사이트 운영을 효율적으로 관리할 수 있는 역할을 담당합니다. 이번 글에서는 이러한 기능들을 구현하는 과정을 설명하고, 어떤 방식으로 작동하는지를 공유하려고 합니다. 부족하더라도 좋게 봐주세요 :) 1. 관리자 로그인 페이지 (Html) 관리자 로그인 로그인 메인으로 이동 관리자용 ID와 Password를 입력한 후 로그인 버튼onclick="admin_login()"을 클릭하면 admin_login() 함수 호출. 2. admin_login() 함수 작성function admin_login() { if($("#id").val() == "") { swal.fire({ ..

Spring Boot - Q&A 페이지 구현하기 (2)

이번 글에서는 질문 작성에 이어서 작성한 질문의 수정 및 삭제에 대해서 포스팅 하겠습니다.부족하더라도 좋게 봐주세요 :) 1. Html - 수정, 삭제 버튼수정삭제 data-qna_seq=${qna.qna_seq}  : 이 속성은 현재 질문의 고유 시퀀스 번호 (qna.qna_seq)를 저장합니다.data-qna_writer=${qna.member.id} : 질문 작성자의 ID (qna.member.id)를 저장합니다.data-answer_status=${qna.answer_status} : 답변 상태 (qna.answer_status)를 저장합니다.data-qna_viewer=${loginUser.id} : 현재 로그인한 사용자의 ID (loginUser.id)를 저장합니다.  2. JavaScript..