전체 글

글 수정 폼으로 넘어가기 위한 detail.jsp 수정 글 번호 : ${board.id } 작성자 : ${board.user.username} ${board.title } ${board.content } 뒤로가기 수정 삭제 BoardController에 updateForm 메서드 추가 @GetMapping("/board/{id}/updateForm'") public String updateForm(@PathVariable int id, Model model) { model.addAttribute("board", boardService.글상세보기(id)); return "board/updateForm"; } updateForm.jsp 생성 Title Content: ${board.content } 글수정 ..
detail.jsp에서 글 번호, 작성자 추가 + 삭제 버튼 id 추가. 글 번호 : ${board.id } 작성자 : ${board.user.username} ${board.title } ${board.content } 뒤로가기 수정 삭제 board.js 에 deleteById 함수 추가. let index = { init: function() { $("#btn-save").on("click", ()=>{ this.save(); }); $("#btn-update").on("click", ()=>{ this.update(); }); $("#btn-delete").on("click", ()=>{ this.deleteById(); }); }, save: function() { let data = { titl..
index.jsp 에 상세내용 링크 수정. 상세내용 detail.jsp 글 상세보기 페이지 생성. ${board.title } ${board.content } 뒤로가기 수정 삭제 BoardController에 상세보기 메서드 생성 @GetMapping("/board/{id}") public String findById(@PathVariable int id, Model model) { model.addAttribute("board", boardService.글상세보기(id)); return "board/detail"; } BoardService에 글상세보기 메서드 생성 public Board 글상세보기(int id) { return boardRepository.findById(id) .orElseThrow..
BoardController의 인덱스 수정. package com.pure.blog.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import com.pure.blog.service.BoardService; @Controller public class BoardController { @Autowired private BoardService boardService..
일단 글쓰기 화면을 만들기. writeForm.jsp Title Content: 글쓰기 완료 위지윅 에디터인 썸머노트를 사용했다. bootstrap4를 지원하기 때문에 알맞은 코드를 가져왔다. 글쓰기 완료 버튼을 누르면 실행될 .js를 만든다. let index = { init: function() { $("#btn-save").on("click", ()=>{ this.save(); }); }, save: function() { let data = { title: $("#title").val(), content: $("#content").val(), }; $.ajax({ type: "POST", url: "/api/boardWrite", data: JSON.stringify(data), contentTy..
loginForm.jsp 수정 이것저것 새로 만들어서 폴더트리 첨부. 스프링 시큐리티는 유저 정보가 UserDetails 라는 인터페이스에 담김. UserDetails를 구현하는 PrincipalDetial.java를 만들 것임. PrincipalDetail 안에 User user를 인자로 가진 생성자를 만들어서 UserDetails의 메서드를 오버라이딩함. package com.pure.blog.config.auth; import java.util.ArrayList; import java.util.Collection; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.user..
XSS? - XSS(cross-site scripting)는 웹페이지에 악의적인 스크립트 코드를 주입할수 있는 취약점이다. 이를 막기 위한 소스 네이버 Lucy XSS filter http://naver.github.io/lucy-xss-filter/kr/ Lucy XSS Filter XSS 공격이 가능한 HTML 요소를 신뢰할 수 있는 코드로 변환하거나 삭제하는 기능을 제공한다. 공격이 가능하지 않은 HTML 요소는 허용을 한다. 4.1. 설정 파일 Lucy-XSS Filter의 필터링 규칙은 화이트리 naver.github.io CSRF? - CSRF 공격(Cross Site Request Forgery)은 웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 ..
스프링 시큐리티는 비밀번호가 해쉬화 되어야 로그인이 가능. SecurityConfig 수정 package com.pure.blog.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springfra..
Purewater
프로그램 공부 일기장