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)를 연습하기에 적당한 예제입니다. 이 게시판은 로그인 환경을 가정하여 만들었습니다. 로그인 관련 부분은 더보기…

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를 네아로 (네이버 아이디로 로그인) 을 선택하고, 제공 정보 선택에 더보기…

자바: 텍스트 파일 입출력 (예제 – 간단한 로그 기록)

텍스트 파일 읽기 (BufferedReader 사용) 텍스트 파일을 읽는 순서는 다음과 같습니다. File 인스턴스를 생성 File 인스턴스를 파라미터로 하는 FileReader 인스턴스 생성 FileReader 인스턴스를 파라미터로 하는 BufferedReader 생성 BufferedReader에서 읽은 텍스트를 임시로 저장하는 String 타입의 변수 생성 while문과 버퍼리더의 readLine() 을 이용해 텍스트 파일을 한 줄씩 읽음 BufferedReader를 close() 시킴   더보기…

자바 예제: 특정 주파수의 소리 재생

특정 주파수의 음을 사인파(Sine Wave)로 재생하고 싶다면, javax.sound.sampled.* 라이브러리를 사용합니다. javax 시리즈는 자바에서 기본 제공됩니다.   1) new AudioFormat으로 새로운 오디오 형식 생성 public AudioFormat(float sampleRate:샘플수, int sampleSizeInBits:비트당샘플사이즈, int channels:채널수, boolean signed:부호여부, boolean bigEndian:빅엔디안여부)   2) 생성한 AudioFormat에서 소스 데이터 라인(Source Data Line)을 추출 후 SourceDataLine 자료형 변수에 저장 AudioFormat 더보기…

자바: Enum (예제 – 모스 부호)

Enum 클래스는 고유 타입으로 상수를 이용할 수 있게 하는 특수한 클래스입니다. (자세한 내용) 다음은 가장 기초적 형태의 Enum 선언입니다. public enum FourDevas { 백호, 주작, 청룡, 현무; } 이렇게 하면 백호, 주작, 청룡, 현무의 4개의 상수가 지정되며 FourDevas 자료형을 통해 해당 상수들을 사용할 수 있습니다.   아래 코드에서 변수fd에는 FourDevas 더보기…

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()이 없으면 권한 문제가 있는 경우 로그인 화면에 들어갈 수 없으므로 반드시 넣어줘야 합니다. 더보기…

Spring: AJAX로 백엔드 컨트롤러에 이미지 전송

컨트롤러 (일부) @RequestMapping(value = “/url”, method = RequestMethod.POST) public String insert(MultipartHttpServletRequest request, HttpSession session, ModelMap model) throws Exception { String rootPath = session.getServletContext().getRealPath(“/”); System.out.println(“imageFile ” + request + ” ” + request.getParameter(“imgFile”) + ” ” + rootPath + ” “); Iterator<String> itr = request.getFileNames(); if(itr.hasNext()){ List<MultipartFile> mpf = request.getFiles(itr.next().toString()); for(int 더보기…