블로그 만들기 17. 글쓰기 구현 : 인증 체크하기

Feb 06, 2024
블로그 만들기 17. 글쓰기 구현 : 인증 체크하기

1. saveForm에 글쓰기 화면 확인하기

notion image
 

2. 인증 비지니스 파악하기

  • 클라이언트의 사용성을 따라 파악하기
  • JsessionID 영역에 USER객체가 없는 사람 막기
  • 로그인 페이지로 리다이렉션 시키기
 

3. 인증 체크 알고리즘

  • /board/saveForm Get요청이 옴
  • session 영역에 sessionUser 키 값에 user 객체가 있는지 체크하기
  • 값이 null이면 로그인 페이지로 리다이렉션
아니면 /board/saveForm으로 이동
 

4. Session에 접근하는 방법

  • DI
private HttpSession session; public BoardController(HttpSession session) { this.session = session; }
  • request 객체로 접근하기
파라미터로 들고와야 함
public String 메서드명(HttpServletRequest request) { HttpServletRequest session = request.getSession(); return 값; }
 

5.해시맵 알아보기

HashMap<String, Object> map = new HashMap<>(); map.put("sessionUser", "안녕"); map.put("name", 1.0); String sessionUser = (String) map.get("sessionUser"); Double name = (Double) map.get("name");
6.인증 로직 구현하기
  • BoardController에서 saveForm에 구현하기
package shop.mtcoding.blog.board; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import shop.mtcoding.blog.user.User; import java.util.List; @RequiredArgsConstructor @Controller public class BoardController { private final HttpSession session; // DI private final BoardRepository boardRepository; // DI // http://localhost:8080?page=0 @GetMapping({ "/", "/board" }) public String index(HttpServletRequest request) { List<Board> boardList = boardRepository.findAll(); request.setAttribute("boardList", boardList); return "index"; } @GetMapping("/board/saveForm") // /board/saveForm Get요청이 옴 public String saveForm() { // session 영역에 접근하기 위한 // 1. session 영역에 sessionUser 키 값에 user 객체가 있는지 체크하기 User sessionUser = (User) session.getAttribute("sessionUser"); // 2. 값이 null이면 로그인 페이지로 리다이렉션 if(sessionUser == null) { return "redirect:/loginForm"; } // 3. null이 아니면 /board/saveForm으로 이동 return "board/saveForm"; } // 상세보기시 호출 @GetMapping("/board/{id}") // 1이 프라이머리키 -> 뭐든 넣어도 실행시키려면 변수화시켜서 {} public String detail(@PathVariable int id) { System.out.println("id : "+id); return "board/detail"; } }
notion image
notion image
Share article

vosw1