백엔드
-
[Spring Boot] Spring Security와 JWT를 이용한 OAuth2 로그인(카카오, 백엔드, 프론트의 흐름)백엔드 2023. 6. 27. 00:34
* 이번 CEOS 프로젝트를 진행하며, 작성한 코드를 토대로 쉽게 흐름을 보기위해 정리한 글입니다. Spring Security란 인증과 인가(권한)에 대한 부분을 Filter에 따라 처리한다. Dispatcher servlet으로 가기 전에 적용되어 가장 먼저 URL 요청을 받는다. 여기서 인증이란 해당 사용자가 본인이 맞는지 확인하는 과정이며, 인가이란 인증된 사용자가 요청한 자원에 접근할 수 있는지 결정하는 과정이다. 즉, 인증을 성공해야 인가가 이루어진다. OAuth2 KAKAO Login을 살펴보자. (카카오 서비스에서 신규 서비스를 등록하는 과정은 생략했습니다.) 1. 사용자가 카카오 로그인을 http://localhost:8080/oauth2/authorization/kakao?redirec..
-
php와 mariaDB(xampp, mysql)백엔드 2023. 5. 27. 20:22
보편적으로 많이 사용되는 웹서버로는 Apache, lls, Nginx( my.ini에서 port를 3308로 열어준다. (mysql의 default port number는 3306이다.) 3. 아파치 웹 서버 동작 확인 브라우저에 http://localhost를 쳐서 xampp 창이 나온다면, 서버가 잘 띄워진 것이다. 4. MariaDB 연동 오른쪽 칸의 Shell로 들어간다. 여기서 기본적으로 mysql - u root -p 를 입력한다. 패스워드는 없다. (그냥 엔터치면 된다.) 5. MariaDB 회원가입 및 권한 부여 GRANT ALL PRIVILEGES ON *.* TO 'web'@'%' IDENTIFIED BY 'web_pwd'; 를 치면 모든 port에 대해 web_pwd이라는 비밀번호로 ..
-
[Django] JWT TOKEN(access token, refresh token, crfs, cors error)백엔드 2023. 5. 4. 12:14
폴더 구조는 다음과 같다. 다음과 같은 로직으로 코드를 짰다. 회원가입 #회원가입 class SignupView(APIView): def post(self, request): #프론트에서 올린 데이터(request) serializer = SignUpSerializer(data=request.data) #입력된 데이터가 유효하다면,에러발생X if serializer.is_valid(raise_exception=False): user = serializer.save(request) response = Response( { "user_id": user.user_id, "message": "회원가입 성공", }, status=status.HTTP_200_OK, ) return response return Re..
-
Modeling(데이터베이스 모델링)백엔드 2023. 4. 2. 21:44
1장 업무 파악 > 개념적 데이터 모델링(erd diagram) > 논리적 데이터 모델링(표) > 물리적 데이터 모델링(sql 코드) 2장 업무파악 - 의뢰한 사람과 ui 그려보기(기획서 제작) 3장 4장 개념적 데이터 모델링: 연관된 정보를 그룹화하여 그룹끼리의 관계를 표현한다. 5장 원하는 데이터만을 join하기에 쉽다. 6장 '글'에 '저자'를 속성으로 넣지 않는 이유는, '저자'만의 '저자 소개','저자 가입일' 등의 속성을 가지기 때문이다. PK, FK로 관계를 가지게된 테이블들은 JOIN을 통해 연결할 수 있게 된다. 7장, 8장 식별자 선택: PK 선택 9장 10장 cardinality: 1:1, N:1, N:M 하지만, 에브리 타임 앱에서, '작성'이라는 관계로 묶여있는 저자와 글은 1:N..
-
[Git] 커밋 기록 삭제 및 복구백엔드 2023. 3. 26. 00:02
CEOS 과제를 하던 중 데이터베이스 비밀번호가 적힌 파일을 gitingnore에 추가하지 않고 push 해버렸다. 첫 번째 시도(커밋 기록 삭제) 아래 사진처럼 .env(my_setting.py로 설정)을 따로 둔 뒤, settings.py에 import해오는 식으로 구현했다. 데이터베이스 비밀번호나 비밀키 같은 경우 파일을 분리해서 저장해두면, gitignore로 쉽게 관리할 수 있기 때문! my_setting.py를 gitignore에 추가해주고 이제 커밋기록에서 my_setting.py를 없애야 한다. 이전에 깃허브에 이미 push를 해놨기때문에 git에 기록이 되었다. 그래서 캐시를 먼저 삭제해주었다. 캐시 삭제 git rm -r --cached . 또는 git rm -r --cached 파일이..
-
django ch1 - ch4백엔드 2023. 3. 22. 23:26
개념 HTTP란 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속(protocol)이다. 클라이언트는 서버에게 request를 보내고, 서버는 response를 클라이언트에게 보낸다. 프로젝트 생성 및 환경 설정 레포지토리를 fork한 후, cmd를 켜 get clone [레포지토리 주소]로 폴더를 생성해준다. pycharm에서 해당 폴더를 열고 터미널에 git checkout -b [브랜치 이름]를 쳐 branch를 만든다. (오른쪽 하단에서 현재 브랜치 확인 가능) 해당 프로젝트를 위한 가상환경을 세팅해준다. Pycharm 상단 메뉴바 File - Settings - Project - Project Interpreter add interpreter을 눌러서 하면 된다. 이때 파이..
-
스프링 부트와 AWS로 혼자 구현하는 웹 서비스(-78p)백엔드 2023. 1. 6. 16:26
코드를 작성하고 프로그램(tomcat=server)를 실행한 뒤 postman과 같은 API 테스트 도구로 HTTP 요청하고 요청결과를 System.out.println()으로 눈으로 검증한다. 결과가 다르면 다시 프로그램(tomcat)을 중지하고 코드를 수정한다. => 테스트 코드를 작성하면 이런 문제가 해결되므로 굳이 tomcat을 올렸다 내렸다 할 필요가 없다. => 테스트 코드를 작성하면 system.out.println()으로 확인할 필요없이 자동검증이 된다. 테스트 코드 작성을 도와주는 프레임워크들이 있다. 자바는 Junit을 사용한다. HelloSpringApplication 클래스는 앞으로 만들 프로젝트의 메인 클래스가 된다. @SpringBootApplication 으로 인해 스프링 부트..
-
데이터베이스(MySQL)백엔드 2022. 8. 30. 01:23
해당 글은 EFUB 세미나를 듣고 작성되었습니다. 관계 데이터 모델 : 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델 1. 릴레이션(relation) = Table, Entity에 대응 - 하나의 개체에 관한 데이터를 2차원의 테이블 구조로 저장 - 관계형 데이터베이스에서는 테이블과 같음 - 논리적 데이터 모델링에서는 Entity와 같음 ex) 학생 2. 속성(attribute) = 열, 필드 - 릴레이션의 열 - Entity를 구성하는 논리적 단위 - 파일 구조상에서는 데이터 필드를 의미 ex) 학번, 이름, 학년... 3. 튜플(tuple) = 행 - 릴레이션의 행 - 파일 구조 상에서는 레코드를 의미 ex) (86032, 장보고, 4, 174, ED) 4. 도메인(domain) - 하나의..