본문 바로가기

메타인지/TIL

TIL 10/18~10/24

 - 클래스, 클래스내 메서드 변수 작명하는 법

 - Rest API 작성시 _ 사용자제 -로 사용

 

 - 지금까지 배웟 던 것 개념 정리

 

 - 장고 앱 내 파일들을 구조화 하면서 정리

 

 - 3세대형으로 model, view, url 연결하는 법 정리

 

 - 크롤링 파싱, 스크래핑 개념

크롤링 : 조직적, 자동화된 방법으로 www 탐색하고 찾아낸 데이터를 저장하고 쉽게 찾을  있게함 

파싱  어떤 페이지에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보를 가공하는것(문자열->의미있는 토큰-> 파스트리를 만드는 과정 

스크래핑: HTTP 통해  사이트의 내용을 긁어  원하는 형태로 가공하는것( 데이터 수집의 모든작업 

 

 - robots.txt 관련 크롤링 주의사항

로봇 배재 표준(권고안)으로  사이트별로 bot  접근 권한에 대한 명세 파일  

 

3가지 구조  

user-agent : 규칙이 적용되는 로봇 이름들 ) "*" 모든로봇 

disallow: 차단할 URL 경로 ) "/"  전체 루트임 

allow : 차단  상위 디렉토리의 하위 디렉토리에 있는 URL 경로이며 차단 해제  디렉토리 ) "/mypage" 특정경로 접근가능 

 

로그인 유무  봐야하는지 , JS 구성되어있는지 

 

 - urlib 패키지 학습

 - 서버 인증, 인가,  암호화 학습

Auth(인증) : 유저의 정보가 일치하는지 증명하는 과정 

Author(인가) : API 통신시 권한 허가를 줄수있는지  

난수화: 

 

Password 암호화 

양뱡화 

:암호화와 복호화가 되면 위험성이 초래된다. 

 

반방향 일방향 암호화 

:암호화만하고 복호화하지 않는다  hashable을 통해서 만듬(이렇게 안해도 되지만) 

해쉬값이 동일하면 같다. 

bcrypth Key 스트레칭( 키를 늘려서 더 어렵게 한다(salting)) 

 

'str문자열' -> byte화 -> hashing화(hash(Data,getsalt()) ->ㄷㅣ코드 

 

추가로 공부하고 싶으면 CBC를 하면되고  

파이크립토를 쓴다. 

https://javaplant.tistory.com/26 

 

sha512 가장 현재 강력하다. 

sha3  가장흔하다. 

 

위에 bytes(, encoding=utf-8) 

bcrypt.hashpw(변수명,bycrypt.ge.gen_salt()) 

 

 - JWT 토큰

JWT = JsonWebToken 

(pyJWT 사용한다) 

 

구조 < 내용(payload),시크릿키, 시그니처 > 

payload = 내용에는 개인정보 :유저의 pk, expired-date를포함한다) 

시크릿키 = 서버의 고유키 

시그니처 = 암호회방식 

 

예 )jwt.encoding({"user_id": 유저정보, "exp_date": 시간정보}, secrect_key,algorithm="HS256"}) 

ost request 

 

data['password'] = bcrypt.checkpw(data['password'].encode("utf-8"),DB.password.encode("utf-8"))  

//들어온평문패스워드를 같은 utf-8인코딩 형식으로 해서 토큰끼리 평문에서 자동으로 비교 해준다. 

후에 decode로 전달

 

 

 - 인가 관련 데코레이터 구현

데코레이터 사용 이유 : 1)강제성 2) 반복되는 로직 간편화(추상화)

 

유저가 회원인가자인지 알아야  

그러면 로그인데코레이를 구현하여 사용 

로그인 뿐만아니라 여러가지 활동에 있어 데코레이터를 주면서 인증을 해준다. 

@login_check 데코레이터에 들어가는 내용들 (,*,**) 

 

decoded = jwt.decode(Jwt토큰(인코딩된) ,secret_key , algorithm="HS256") 

 

JWT토큰: 딕셔너리 형태 

 

Decoded되면 decoded["user_id"] 

 

request.headers.get("Authorization"] 

 

 - 회원가입, 로그인 Flowchart in Django

회원가입 -> password 암호화 -> DB저장 ->  

처음 로그인시 

로그인(bcrypt(암호화된 패스워드 == 지금입력한 패스워드?) true->[[[user.object.get() {pk키를 넣어주면 조회하기편함} ===> jwt,encode(토큰정보로]]]],secret, algorithm ) --------> return token 해준다 

 

 

로그인  홈페이지 이동시 

이토큰이 http.request 헤더에 토큰이 있는지 확인하고 get -> jet.decode(token.secret) 하고 return token해준다. 

 

 - HTTP 복습 

api 원격으로 호출한다고 생각하면 편하다  

예를 들어 서버를 찾고 싶으면 http주소 혹은 ip로 호출한다 

요즘은 host domain하거나 ip 확인하고 한다. 

 

엔드포인트 : 접점 

 

백엔드 : 엔드포인트 구현 

프론트 엔드: 엔드포이트 호출 

 

 - restful api 복습

  - 에러 핸들링

1. 앱에 urls.py 없거나 잘못적혀있으면(대체로 프로젝트urls.py를 복사하기떄문에 에러가난다 아직 작성안한거는 주석처리를 통해 해결하자 

'메타인지 > TIL' 카테고리의 다른 글

TIL 11/01~11/07  (0) 2019.11.07
TIL 10/25~10/31  (0) 2019.10.30
TIL 10/11~10/17  (0) 2019.10.11
TIL 10/4~10/10  (0) 2019.10.04
TIL 10/3 블로그에 열심히 지식을 서술하자  (0) 2019.10.03