본문 바로가기

BackEnd/Python-Flask

[백엔드] Flask: JWT token으로 코드 짜기 JWT token으로 코드 짜기 미리 postman에 가서 세팅해둔다: 실행할 API의 header의 Key값을 Authorization로 설정한다. 여러 토큰의 형식 중에 하나인 Bearer을 Value에 입력해준다. -> Bearer 띄어쓰기 하고, 로그인 할 때의 access token을 입력한다. access token: user_id의 정보가 들어있는 것. 그것을 암호화 하여 전송하는 것. -> access token이 있어야 누가 API를 요청하는지 알수 있다. 우선 사용될 라이브러리는 하기와 같으며, from http import HTTPStatus from flask import request from flask_jwt_extended import get_jwt_identity, jwt_r.. 더보기
[백엔드] Flask: 로그인 API 로그인 API API 명세서: POST/users/login email,password ㄴ POST: 데이터를 저장할 때도 쓰지만, 중요한 데이터를 보낼 때도 사용된다. ㄴ email과 password만 있으면 로그인할 수 있다. email은 유니크 해야하므로, mysql에서 UQ 체크해준다. mysql에서 테이블 설정할 때, password는 암호화 해서, 저장되는 것이기 때문에, varchar의 글자를 길게 설정해야한다. 짧으면 당연히 안된다. 설계 문서대로 하자. - 로그인 하면, user_id도 필요하다. 클라는 우리 눈에 안보이는 user_id를 서버에게 보내줘야한다. API를 개발할 때는, 먼저 가져오는 데이터가 무엇인지 주석처리로, 적어놓고 한다. 그리고 주석으로 순서 또한 써놓는다. 먼저 .. 더보기
[백엔드] Flask: 파이썬에서 JWT사용 파이썬 Flask 에서 JWT사용 flask-jwt-extended 라이브러리를 우선 설치한다. pip install flask-jwt-extended ㄴ 참고 사이트: https://flask-jwt-extended.readthedocs.io/en/latest/options/ 해당 라이브러리는 다음 3개의 기능을 제공한다. create_access_token() @jwt_required(optional=False): 무조건 토큰 필요. optional = True로 하면 상관 없다는 뜻 get_jwt_identity() 파일 config.py를 만들어서 JWT에 관련한 코드를 관리해주는 것이 나중을 위해서라도 편리하다. configuration: 환경설정한다는 뜻, 환경설정한다는 뜻 해당 파일에서 작성.. 더보기
[백엔드] Flask: 비밀번호 처리 : 비밀번호 로그인 체크 비밀번호 암호화 관련 포스팅 하기 참고: https://yeo0616.tistory.com/181?category=1286627 - 암호화 해서, DB에 비밀번호를 저장했다. 로그인 할 때, 체크 하는 방법도 알아보자. ㄴ 하지만 결국, 암호화된 값끼리 비교해서, 일치하면 된다. ㄴ 이를 체크할 함수도 또한 필요하다. # 비밀번호가 맞는지 확인하는 함수, True/False를 리턴한다. def check_password(original_password, hashed_password): # 이미 라이브러리가 있다. salt = 'yh*h123' check = pbkdf2_sha256.verify(original_password+salt, hashed_password) # True인지 False인지 체크를 .. 더보기
[백엔드] Flask: 비밀번호 처리 : 비밀번호 암호화 비밀번호는 암호화로 처리한다. 원리는 하기 이미지와 같다. 해당 기능을 사용하기 위해서는 우선적으로, vscode cmd 터미널에서 하기 라이브러리를 설치합니다. pip install psycopg2-binary passlib - 암호화 관련되서, 암호화 코드를 관리해줄 file을 생성한다. 해당 파일을 하나 생성하면, 어떤 서비스를 만들던지, 이 파일만 가져다놓으면 된다. - 파일 이름은 utils.py (utility 유용한 함수만 모아놓은 파일이라는 뜻)로 하고, 여기서 관리하자. - 코드 생성 및 실행 시 실제 서비스가 진행되는 단계는: 회원가입 -> 이메일.비밀번호 -> 비밀번호 암호화 암호화 코드 예제: from passlib.hash import pbkdf2_sha256 # 암호화 알고리즘... 더보기
[백엔드] Flask: 터미널에 API 진행상황이 안나올 때 문제점: POSTMAN에서 실행하니, 500 Internel 문제라고 하고, vscode 터미널에 API 실행 상황이 공유가 안된다 ( = 에러가 나타나지 않는다) 해결: POSTMAN으로 하나의 API를 실행할 때마다, 터미널에는 API의 실행상황이 나와야한다. 만약에 로컬 서버에 연결이 됐는 데, API를 실행했는데도, 실행상황이 터미널에 표시 되지 않으면, 내가 두개 혹은 그 이상의 터미널에서 동시에 서버가 돌아가는 상황일수도 있다. 서버는 하나만 연결해야한다. 나머지는 정리하자. 더보기
[백엔드] Flask: recipe 프로젝트: API 조회/수정/삭제: GET/PUT/DELETE 레시피 하나만 조회하는 API API 설계서 확인 - 하나의 레시피/정보를 가져올것이다. ‘경로/숫자’의 형식으로 경로를 지정할 것이다. - 우선 [‘GET’]의 API 코드를 작성해보자. - 항상 vscode에서 코드를 작성하기 전에, 해당 쿼리문이 잘 실행되는지를 mysql에서 확인이 끝나야한다. app.py의 코드는 하기와 같다. api.add_resource(RecipeResource,'/recipes/') # 이 뒤에있는 숫자를 받아, 어디로 처리하라. # 하나의 경로당, 하나의 class로 처리한다. 새로운 파일 recipe_info.py를 생성하여 하기 코드를 작성한다. from flask import request from flask_restful import Resource from my.. 더보기
[백엔드] Flask: recipe 프로젝트: API 설계, 새로운 데이터 작성: POST 레시피의 프로젝트를 진행해보자. POST: 수정해야지/생성해야지 DELETE: 내가 만든 삭제해야지 PUT: 임시저장한 레시피를 공개해야지 DELETE: 임시저장 해야지( PUT으로 해도 되긴 함). 여기서는 퍼블리싱 하는 것을 삭제한다는 뜻으로 사용한다.. GET: 레시피를 가져온다는 뜻. 거기에 대한 URL, 클라가 저렇게 요청하면 레시피를 보여주는 것. 의미를 보고, 상황을 봐서 명령어를 사용하도록 한다. 정답이 있는 건 아니다. 새로운 레시피 작성 API recipe.py의 파일을 resource 폴더안에 새로 생성해주고, 윤곽을 잡아준다. from http import HTTPStatus from flask import request from flask_restful import Resource.. 더보기