분류 전체보기
-
TIL. 62 회원가입, 로그인 _ HTTP 통신TIL 2020. 12. 9. 23:32
내가 만든 백엔드 서버와 이미 구현되어있는 프론트 서버를 서로 연결하여 실제로 통신이 잘 되는지 에러 및 DB 접속은 원활한지 확인하는 시간을 가졌다. 복기 차원에서 하나하나씩 되짚어보도록하자 1. 혼자서 Project 진행 당시 httpie 로 요청을 보낼때 POST 메서드와 GET 메서드로 URL 요청을 분리하여사용하였다. POST 요청시 -> Signup View로 연결 GET 요청시 -> Signin View 로 연결 해주었다. 따라서 혼자 로컬서버를 띄워보고 통신할때는 문제가 없었으나 회원가입의 엔드포인트와 로그인의 엔드포인트는 모두 POST 메서드를 통해 요청이 들어왔다 이에 따라 SigninView를 새로 클래스를 구성하여 같은 POST 메서드에서도 URL 엔드포인트에 따라 알맞는 View로..
-
TIL.61 Bcrypt, Pyjwt (암호화)TIL 2020. 12. 8. 16:40
사용자의 비밀번호를 암호화하여 데이터베이스에 저장하고 저장된 데이터베이스의 비밀번호화 사용자가 로그인할때 입력하는 비밀번호가 어떻게 같은지 검증하는법을 알아보자. 비밀번호를 암호화 하기 위해 Bcrypt 와 사용자 로그인시 함께 전달할 JWT Token을 만들기 위해 Pyjwt를 먼저 설치하자 pip install bcrypt pip install pyjwt 비밀번호 암호화 'Bcrypt bcrypt는 단방향 해시 알고리즘으로 Salting 및 Key Stretching 하면 복호화가 거의 불가능에 가깝다 salting과 key stretching을 이용해 암호화를 하기 위해 Bcrypt에선 hashpw 함수를 사용한다 hashpw( 기준 문자열(type : bytes) , bcrypt.gensalt()..
-
TIL.60 인증 & 인가 (Hash/Hashing)TIL 2020. 12. 7. 15:01
인증과 인가는 API에서 가장 자주 구현되는 가운데 하나이다. 먼저 로그인 절차부터 차근차근 알아보자. 로그인 절차 유저 아이디와 비번 생성 유저 비번 암호화 해서 DB에 저장. 유저 로그인 -> 아이디와 비밀번호 입력 유저가 입력한 비밀번호 암호화 한후 암호화되서 DB에 저정된 유저 비밀번호와 비교. 일치하면 로그인 성공 로그인 성공하면 access token을 클라이언트에게 전송. 유저는 로그인 성공후 다음부터는 access token을 첨부해서 request를 서버에 전송함으로서 매번 로그인 해도 되지 않도록 한다. 유저 비밀번호 암호화 유저의 비밀번호는 절대 비밀번호 그대로 DB에 저장 하지 않는다. DB가 해킹을 당하면 유저의 비밀번호도 그대로 노출 된다. 외부 해킹이 아니더라도 내부 개발자나 ..
-
TIL.58 Django Rest Framework_serializer(직렬화)TIL/Django 2020. 12. 6. 23:43
클라이언트의 Request(요청)에 대한 Response(응답)을 백엔드서버에서 보내줘야한다. 이러한 Http 통신은 이전에는 XML(Extensible Markup Language) 형식을 사용하였었다. 하지만 XML은 장황하고 복잡하였으며, 많은 태그들과 문자량이 늘어나 응답시간이 느린 무거운 방식이었다. 이에 대안으로 JSON(Javascript Object Notation)이 등장하였으며, 현재는 대부분 JSON 형식을 사용하고 있으며 http 통신은 JSON 형태로 이루어지고 있다. 따라서 클라이언트 Tool(Httpie) 또한 JSON 형식으로 데이터를 주고 받는다. 자 그럼 본격적인 Serializer 란 무엇일까? Serializer라는 DJango Rest Framework에서 나온 새로..
-
MySQL.2 1054 unknown column_errorMySQL 2020. 12. 5. 16:41
문제 models.py를 아래와 같이 구성하였음에도 계속해서 Textfield column이 만들어지지 않았다 from django.utils import timezone from user.models import User class Board(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) time = models.DateTimeField(default=timezone.now) image = models.CharField(max_length=200) contents = models.TextField() class Meta: db_table = 'boards' 이전까지는 계속해서 contents라는 column이 없었었다!..
-
TIL.57 null=True 와 blank=True 의 차이(Django)TIL/Django 2020. 12. 5. 15:26
Django에서 Model을 구성할때 null=True 와 blank=True 의 차이는 뭘까? null 과 blank 는 둘 다 기본값이 False 입니다. 이 두 설정은 모두 필드(열) 수준에서 동작합니다. 즉, 필드(열)를 비워두는 것을 허용할 것인지를 설정합니다. null=True 는 필드의 값이 NULL(정보 없음)로 저장되는 것을 허용합니다. 결국 데이터베이스 열에 관한 설정입니다. date = models.DateTimeField(null=True) blank=True 는 필드가 폼(입력 양식)에서 빈 채로 저장되는 것을 허용합니다. 장고 관리자(admin) 및 직접 정의한 폼에도 반영됩니다. title = models.CharField(blank=True) # 폼에서 비워둘 수 있음. 데이..
-
TIL.56 SPA_UX 및 개발자TIL 2020. 12. 4. 15:18
UX = User experience 사용자 경험(使用者經驗, User Experience 유저 익스피리언스[*], 간단히 UX)은 사용자가 어떤 시스템, 제품, 서비스를 직, 간접적으로 이용하면서 느끼고 생각하게 되는 총체적 경험을 말한다. 단순히 기능이나 절차상의 만족뿐 아니라 전반적인 지각 가능한 모든 면에서 사용자가 참여, 사용, 관찰하고 상호 교감을 통해서 알 수 있는 가치있는 경험이다. 긍정적인 사용자 경험의 창출은 산업 디자인, 소프트웨어 공학, 마케팅, 및 경영학의 중요 과제이며 이는 사용자의 니즈의 만족, 브랜드의 충성도 향상, 시장에서의 성공을 가져다 줄 수 있는 주요 사항이다. 부정적인 사용자 경험은 사용자가 원하는 목적을 이루지 못할 때나 목적을 이루더라도 감정적, 이성적으로나 경제..
-
Python.8 복사해서 사용하기 좋은 정규표현식 모음카테고리 없음 2020. 12. 3. 19:06
1. 영문자 소문자, 숫자, "-", "_" 로만 구성된 길이 2 ~ 10자리 사이 문자열 /^[a-z0-9_-]{2,10}$/ 2. 신용카드 번호 19자리 숫자와 "-": /^[0-9-]{19}$/ 4-4-4-4 체크: /^[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}$/ 3. 영문자 대소문자와 숫자로만 구성 /[a-zA-Z0-9]/ 4. 전화번호 3자리-3~4자리-4자리(사이에 1자 아무거나 가능)): /^[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3,4}[-\s\.]?[0-9]{4}$/ 3자리-3~4자리-4자리(사이에 "-" 고정): /^\d{3}-\d{3,4}-\d{4}$/ 휴대폰&전화번호: /(^02.{0}|^01.{1}|[0-9..