- 클래스, 클래스내 메서드 변수 작명하는 법
- 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 |