https://kyuhyuk.kr/article/spring-boot/2020/07/21/Spring-Boot-JPA-MySQL-Board-Post-Update-Delete [Spring Boot] 게시판 구현 하기 (3) - 글 수정 및 삭제 앞의 글에서 글을 조회하는 기능을 만들었습니다. 이번 시간에는 글을 수정하고 삭제하는 기능을 구현해보겠습니다. kyuhyuk.kr 오늘도 이 분의 코드를 참고했습니다. Controller 추가 @GetMapping("/post/edit/{id}") public String edit(@PathVariable("id") Long id, Model model) { BoardDto boardDto = boardService.findById(id); model.addAtt..
spring
게시글 작성에서 기존의 방식은 사용자가 글 제목, 작성자, 글 내용을 직접 입력해야했습니다. 그러나 로그인한 사용자의 이름을 게시글 작성자로 설정해두고 싶습니다. 이 처리를 위해서는 세션이 필요하다고 생각했고 관련 자료들을 찾게 되었습니다. HttpSession 활용하기 https://pro-pennek.tistory.com/entry/Spring-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EC%97%90%EC%84%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A1%9C-Session%EA%B0%92-%EB%84%98%EA%B8%B0%EA%B8%B0 [Spring] 컨트롤러에서 서비스로 Session값 넘기기 어으 죽을 맛이다.ㅋㅋㅋㅋ 이것때문에 개고생함. 컨트롤러..
게시글 작성 기능에 이어서 글을 읽을 수 있는 기능을 넣어줍시다. 일단 게시글 목록 조회도 필요할 테고 그중에서 마음에 드는 글의 내용을 볼 수 있도록 해볼게요. BoardController @GetMapping("/board/list") public String list(Model model){ model.addAttribute("postList",boardService.findAllDesc()); return "board/list.html"; } @GetMapping("/board/post/{id}") public String findById (@PathVariable Long id,Model model){ BoardDto boardDto = boardService.findById(id); model..
2021.03.28 - [web/spring&spring boot] - [스프링부트] 게시판 - 게시글 등록 구현하기(1) [스프링부트] 게시판 - 게시글 등록 구현하기(1) 사용자가 메인 페이지에서 글쓰기 버튼을 누르면 글 작성 페이지로 넘어가고 작성한 내용을 mysql 데이터베이스에 저장해봅시다. mysql 및 기본 프로젝트 설정은 이미 준비되어있다는 가정하에 진 coding-nyan.tistory.com 지난 시간에는 Entity만 구현하고 끝내버렸군요. board domain @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @EntityListeners(AuditingEntityListener.class) public clas..
오늘은 회원가입 후 home으로 돌아가고 다시 사용자가 로그인해야되는 과정을 자동 로그인 방식으로 바꿔보겠습니다. 여담이지만 저는 로그인 다음에 게시글 목록 창으로 리다이렉트 시키는 작업도 해줬답니다. 별건 아니지만 그걸 이제서야 하는 나란 아이.. 자동 로그인 구현 @PostMapping("/user/register") public String signup(UserDto userDto,HttpServletRequest request,HttpServletResponse response) throws ServletException { userService.saveUser(userDto,request,response); request.login(userDto.getUsername(),userDto.getPa..
회원가입/로그인에 이어서 로그아웃 기능을 구현해봅시다. SecurityConfig 수정 @Override protected void configure(HttpSecurity http) throws Exception { //... .and() .logout() .logoutSuccessUrl("/") // 로그아웃 성공시 리다이렉트 주소 .invalidateHttpSession(true); // 로그아웃 이후 세션 전체 삭제 여부 } config 파일에 로그아웃 기능을 추가해줍시다. 스프링 시큐리티가 참 좋아요. 이렇게 직관적인 메서드들을 제공해주므로 그대로 써줍시다. 로그아웃 관련 메서드들 정리 logoutSuccessUrl("URL") redirect할 주소를 적어줍니다. html같은 페이지 단위 주소..
username과 password로 로그인을 구현해보도록 하겠습니다. Overview spring security의 PasswordEncoder를 이용하면 단방향 방식의 암호화를 통해 비밀번호를 안전하게 저장할 수 있습니다. 실제로 회원가입 기능에서 PasswordEncoder를 상속받은 BCryptPasswordEncoder를 이용해서 비밀번호를 저장하는 기능을 구현해봤습니다. 로그인 기능을 구현한다면서 왜 갑자기 회원가입을 언급하고 있는 걸까요?? 이유는 로그인 방법이 두 가지로 나뉘기 때문입니다. 암호화 과정을 두 번 거칠 것인지 아니면 비밀번호 저장 방식을 바꿀 것인지로 말이죠. 저장 방식을 바꿔보자 spring security 공식 문서에서 추천하는 방식은 DelegatingPasswordEnc..
지난 시간에 어떤 URI로 요청이 들어와도 무조건 login 페이지가 뜨는 마법을 겪고 글을 끝냈습니다. 이 매직에서 벗어나려면 SecurityConfig 클래스를 만들어서 configuration 수정을 해줘야 합니다. 이번 시간에는 그 방법에 대해서 다뤄보도록 하겠습니다. 로그인 페이지 사용하지 않기 @Configuration 어노테이션은 작성하지 않으셔도 됩니다. 일반적으로 패키지랑 이름을 제대로 지켜주면 스프링이 알아서 이 클래스 파일이 Config 파일이구나~ 하고 인지합니다. 간혹 인식하지 못하는 경우에만 추가해주시면 되겠습니다. 우리를 괴롭히는 로그인 페이지를 사용하지 않을거라면 위 두 가지 방식으로 제어할 수 있습니다. 첫 번째는 모든 요청에 대해서 권한을 허용하는 방법이고 두 번째는 로그..
간단하게 사용자 이름(닉네임)과 비밀번호 정보를 가지고 회원가입 기능을 구현해보겠습니다. 저번에 포스팅하다가 끊긴 게시판 만들기와 같은 프로젝트입니다. 프론트엔드는 이미 따로 구성해놓으셨다는 가정하에 진행하겠습니다. 저는 디자인을 잘 몰라서.. 프론트엔드 부분을 대충 구성해놓았기에 공유해드리기도 민망해서 그렇습니다. 제일 먼저 spring security를 사용하려면 dependency를 추가해줘야겠죠. build.gradle에 다음과 같은 의존성을 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-security' 자 기본 설정(?)은 완료가 되었으니 실질적인 코드 작성을 해보겠습니다. 일단 이번에도 JPA를 가지고 만들게요. U..
스프링 부트에서 사용하는 h2 데이터베이스 기본 설정은 인메모리 형식으로 저장되게 되어있습니다. 인메모리의 경우 데이터베이스가 꺼졌다가 켜지면 데이터가 다 사라진다는 특징이 있습니다. spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect application.properties에 보통 이런 식으로 작성하실 텐데요. 디스크에 저장하는 방식도 간단합니다. spring.datasou..