Spring Boot 예제: 회원가입 폼 만들기

이 예제에는 스프링 시큐리티와 Thymeleaf가 사용되었습니다. 기초적인 데이터베이스 insert 예제로, 특별한 내용은 없고 다음을 연습하기 위해 만들었습니다. 회원 테이블에 비밀번호를 BCrypt로 해싱한 텍스트를 입력 원칙적으로 입력한 값에 대한 유효성 검사는 프론트엔드 측과 백엔드 측 모두에서 행해져야 하는데, 백엔드 측의 유효성 검사 과정을 추가 시간 관계상 프론트엔드 측 유효성 검사는 구현하지 더보기…

Spring Boot: Webjars (Bootstrap, JQuery 등의 프론트엔드 라이브러리를 메이븐을 통해 관리)

Webjars는 스프링 부트에서 Bootstrap, JQuery 등의 프론트엔드 라이브러리를 스프링 프레임워크가 자체적으로 관리하도록 하는 방법 중 하나입니다. 예제로 부트스트랩과 JQuery를 추가하겠습니다.   1. webjars.org를 접속한 다음 Popular WebJars 에서 Build Tool: Maven을 선택합니다.   2. 사용하고자 하는 라이브러리의 <dependency/> 안의 내용을 복사한 다음 pom.xml의 <dependencies/> 태그 내에 추가합니다. <dependencies> … <!– webjars.org –> 더보기…

Spring Boot: 시큐리티(Security) – 5 – 권한별 접근 가능한 페이지를 데이터베이스에 설정하기 (동적 설정)

깃허브에서 전체 코드 보기 – https://github.com/ayaysir/spring-boot-security-example-1   스프링 부트 시큐리티에서 자주 변경되는 정보를 분리하는 방법에 대해 알아보겠습니다. (참고 블로그)     Security Config 클래스의 코드에서 위의 빨간색 네모 코드를 데이터베이스에서 가져오는 것으로 바꾸는 작업을 하겠습니다. 이유는 위 네모박스는 자주 변경될 수 있는 부분인데 하드코딩 방식으로 정보가 입력되어 있기 때문입니다.   참고로 더보기…

Spring Boot 예제: 초간단 게시판

이 예제에는 스프링 시큐리티를 사용하였습니다. 시큐리티와 관련된 내용은  스프링 시큐리티 관련 글을 참고하세요.   개요 Spring Boot의 기본 기능(Thymeleaf, 시큐리티 포함)을 이용해서 전통적 형태의 웹 게시판을 만들었습니다. 게시판은 웹 프로그래밍에 있어서 필수라고 볼 수 있는 CRUD(Create, Read, Update, Delete)를 연습하기에 적당한 예제입니다. 이 게시판은 로그인 환경을 가정하여 만들었습니다. 로그인 관련 부분은 더보기…

Thymeleaf: 요소 반복하기 (th:each)

Thymeleaf  관련 글 보기 Thymeleaf에서 특정 요소를 for문처럼 반복하는 방법으로 th:each가 있습니다. <table> <thead> <tr> <th>No.</th> <th>username</th> <th>title</th> <th>date</th> </tr> </thead> <tbody> ……………….. </tbody> </table> <tbody> <tr th:each=”article, i: ${list}”> <td th:text=”${article.seq}”></td> <td th:text=”${article.username}”></td> <td sec:authorize=”isAuthenticated()”> <a th:href=”${‘/board/read/’ + article.seq}” th:text=”${article.title}”></a> <span class=”text-blue” th:if=”${i.count eq i.size}”>[1등]</span> </td> <td sec:authorize=”!isAuthenticated()” th:text=”${article.title}”></td> 더보기…

Spring Boot: 시큐리티(Security) – 4 – 로그인 폼을 거치지 않고 컨트롤러에서 로그인

깃허브에서 전체 코드 보기 – https://github.com/ayaysir/spring-boot-security-example-1   로그인 폼을 거치지 않고 컨트롤러에서 로그인 처리를 하는 방법입니다. 외부 소셜 로그인 기능과 스프링 시큐리티를 연동하고자 할 때 사용할 수 있습니다.   아래 메소드를 컨트롤러 내에 삽입합니다. /** * 로그인 폼을 거치지 않고 바로 로그인 * @param username * @return */ @RequestMapping(“/loginWithoutForm/{username}”) public String 더보기…

Spring Boot: “네이버 아이디로 로그인하기” 연동하기 (1)

깃허브에서 전체 코드 보기 – https://github.com/ayaysir/spring-boot-security-example-1   네이버 개발자 센터: 네이버 아이디로 로그인하기 튜토리얼 네이버 개발자 센터: 네이버 아이디로 로그인하기 API   1. API 신청 네이버로 로그인한 후, 개발자 센터의 애플리케이션 신청 페이지에 가서 애플리케이션을 신청합니다. 애플리케이션 이름을 입력한 뒤 사용 API를 네아로 (네이버 아이디로 로그인) 을 선택하고, 제공 정보 선택에 더보기…

Spring, JSTL: div 태그로 이루어진 이중 반복문 사용하기 (특정 개수별 구분)

예를 들어 15개마다 줄바꿈이 되는 이런 모양의 웹 페이지를 만들고 싶은데, 사용 태그가 div라면 HTML 페이지는 이런 형태가 될 것입니다. <!DOCTYPE html> <html lang=”ko”> <head> <meta charset=”UTF-8″> <title>Document</title> </head> <style> .list { display: inline-block } .list>div { margin: 10px; background-color: antiquewhite } </style> <body> <div class=”list”> <!– max 15 –> 더보기…

Spring Boot: 시큐리티(Security) – 3 – 로그인 및 권한 정보를 DB에서 가져오기

  깃허브에서 전체 코드 보기 – https://github.com/ayaysir/spring-boot-security-example-1 이전 글에서는 기초를 익히기 위해 사용자 및 권한 정보를 inMemoryAuthentication이라 해서 메모리에 하드코딩 했었는데요, 이것을 데이터베이스에 옮겨서 가져오도록 하겠습니다. 데이터베이스는 mariadb 기준입니다. macOS에서 mariadb 설치하기 Spring Boot: mariadb 연결하기 (JDBC-Maven 기준)   먼저 데이터베이스에 임의의 테이블을 만들고 사용자 정보를 입력합니다. 지금은 회원가입 절차가 없으므로 DB에 더보기…

Spring Boot: 시큐리티(Security) – 2 – 커스텀 로그인 페이지 만들기

  1. SecurityConfig 클래스의 configure(http) 에 다음 내용을 추가합니다. .formLogin().loginPage(“/login”).failureUrl(“/login?error”).permitAll() // .logout().logoutRequestMatcher(new AntPathRequestMatcher(“/logout”)) .addLogoutHandler(new TaskImplementingLogoutHandler()).permitAll().logoutSuccessUrl(“/”); loginPage는 로그인할 페이지의 주소이며 로그인이 필요한 상황에서 localhost:xxx/login 을 통해 로그인 화면으로 접속합니다. failureUrl은 로그인 실패했을 때 나타나는 뷰 페이지의 주소입니다. permitAll()이 없으면 권한 문제가 있는 경우 로그인 화면에 들어갈 수 없으므로 반드시 넣어줘야 합니다. 더보기…