지난 글에서 올렸던 galleryService 중 업로드되는 파일의 저장경로와 파일명 지정하는 부분을 자세히 살펴보겠습니다. 먼저 application.properties에 업로드된 파일을 저장하는 경로를 지정해주었구요.중간에 폴더 이름에 한글이 있으면 깨지는 현상이 나타나길래 전부 영어로 설정해주었습니다. 그 후, galleryService에서 @Value 어노테이션을 사용하여 part.upload.path 속성의 값을 가져와서 uploadPath 변수에 할당합니다. 업로드할 파일들을 저장할 위치를 지정하는 속성 값을 가져오는 것 입니다. // 업로드 할 위치 @Value("${part.upload.path}") private String uploadPath; @Service@Log4j2pub..
[ 화면 UI ]먼저 다른 페이지들처럼 React의 pases 폴더 안에 CreateGallery.js 라는 이름의 파일을 생성해주고 App.js에서 라우터에 등록해주었습니다. 💡 useState 훅 사용 useState Hook을 사용하여 컴포넌트의 상태를 관리하고 useCookies Hook을 사용하여 accessToken 쿠키 값을 가져와 cookies 상태 변수를 관리하기 위해서import를 해줍니다.import { useState } from "react";import { useCookies } from "react-cookie"; accesstToken 쿠키 값을 가져오고,업로드 할 파일 목록을 관리하기 위해 files 상태 변수를 작성해줬습니다.초기 상태는 빈 배열로 설정됩니다. ..
너무 오랜만인듯...정처기 실기와 방통대 과제를 끝내고 돌아왔습니다.그동안 갠프젝을 안했던건 아닌데 상대적으로 투자할 시간이 확 줄어서ㅠㅠ이제 정처기가 끝났으니 그동안 못했던 기록들을 천천히 기록해보겠습니다. JWT를 이용하는 방식을 다시 한 번 정리하자면(1) 유저가 로그인할 때 (2) 서버가 인증 정보를 보내주는데, 암호화나 시그니처 추가가 가능한 데이터 패키지안에 인증 정보(accessToken과 refreshToken)를 담아 보내줍니다.(3) accessToken과 refreshToken이 이후 유저 인증에 사용되는데 (4) 이 정보를 클라이언트에 저장해둡니다. (5) 이 accessToken을 유저에게만 보여줄 수 있는 정보에 접근할 때 서버에 보내면 (6) 서버는 그 토큰이 유효한지 확인하..
💡 운영체제 개념 운영체제 (OS ; Operating System) 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임 다중 사용자와 다중 응용 프로그램 환경 하에서 자원의 현재 상태를 파악하고, 자원 분배를 위한 스케줄링 담당 CPU, 메모리 공간, 기억장치, I/O 장치 등 자원 관리 I/O 장치, 사용자 프로그램 제어 운영체제의 목적 (1) 처리 능력 (Throughput) : 일정 시간 내에 시스템이 처리하는 일의 양 (2) 반환 시간 (Turn Around Time) : 시스템에 작업 의뢰한 시간 ~ 처리 완료 시간 (3) 사용 가능도 (Availability) : 시스템 사용할 필요가 있을 때, 즉시 사용..
시큐리티와 jwt를 사용한 로그인 기능까지 구현한 후, JWT를 어디에 저장하는 것이 좋을지에 대해 고민해보게 되었습니다. JWT 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰. JWT 정보를 request에 담아 사용자의 정보 조회, 수정 등의 작업을 수행할 수 있습니다. XSS (Crose Site Scripting) 악의적인 사용자가 웹 애플리케이션에 악성 스크립트를 삽입하여 사용자 브라우저에서 실행되도록 하는 공격 기법입니다. 저장형 XSS, 반사형 XSS, DOM 기반 XSS 등의 유형이 있습니다. CSRF (Cross Site Request Forgery) 정상적인 request를 가로채 피해자인 척 하고 백엔드 서버에 변조된 request를 보내 악의적인 동작을 수행하는 공격 기..
권한까지 구현되었으니 이제 로그인 기능을 구현해보겠습니다. 먼저, 서버 쪽을 하나씩 살펴보면 기본적으로 UserEntity와 UserDTO 그리고 LoginDTO가 있습니다. LoginDTO.java package com.example.demo.dto; import lombok.*; @Getter @Setter @ToString @NoArgsConstructor @Data public class LoginDTO { private String userId; private String password; } UserRepository.java package com.example.demo.repository; import com.example.demo.entity.UserEntity; import org.spr..
Hibernate: select r1_0.user_id, r1_0.role from user_role r1_0 where r1_0.user_id=? 2024-04-08T12:15:58.231+09:00 WARN 23656 --- [nio-8082-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1054, SQLState: 42S22 2024-04-08T12:15:58.231+09:00 ERROR 23656 --- [nio-8082-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : Unknown column 'r1_0.role' in 'field list' org.springframework.security.a..
1️⃣ 2739 번: 구구단 https://www.acmicpc.net/problem/2739 2739번: 구구단 N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다. www.acmicpc.net 💻 나의 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i = 1; i st = new StringTokenizer(br.readLine(), " "); StringTokenizer의 nextToken() 함수를 쓰면 readLine..
1️⃣ 1330번: 두 수 비교하기 https://www.acmicpc.net/problem/1330 1330번: 두 수 비교하기 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오. www.acmicpc.net 💻 나의 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); if(a>b) System.out.println(">"); else if(a= 90) System.out.println("A"); else if (A >= 80)..
각 사용자의 권한을 부여하기 위해 Role과 관련된 테이블을 추가해줬습니다. 사용자(User)와 권한(Role) 간에는 다대다 관계가 있습니다. 즉, 한 사용자가 여러 개의 권한을 가질 수 있고, 한 권한도 여러 사용자에게 할당될 수 있습니다. 매핑 테이블을 만들 때는 보통 각각의 주요 테이블의 기본키(primary key)를 외래키(foreign key)로 참조하며, 이 외래키들이 결합하여 복합 기본키를 형성합니다. 여기서는 "user_role"이라는 매핑 테이블을 만들어 사용자와 권한 간의 다대다 관계를 나타낼 것입니다. user_role 테이블은 다음과 같은 구조를 가집니다. user_id: 사용자를 식별하는 외래키 role_id: 권한을 식별하는 외래키 💻 프로젝트 적용 1️⃣ mySql에 테이블..