본문 바로가기

BackEnd

[백엔드] 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: JWT 인증이란/구성요소/인증절차 JWT 인증 Json Web Tokens 두 개체에서 Json 객체를 사용하여 가볍고 정보를 안전성 있게 전달하는 방식 권한 부여(로그인, 서비스 작성/수정/삭제 등), 정보 교환(유저가 누구인지 확인) 암호화는 JWT 라이브러리가 해준다. 암호화 하고, 다시 되돌릴수 있는 걸 양방향 암호화라고 한다. JWT은 양방향 암호화이다. 참고: https://jwt.io/ JWT의 구성 요소 header.payload.signature header: 암호화 방식과 타입을 나타냄 payload: 전송할 데이터가 담김(유저 정보, 상품 정보 등) signature: 토큰 검증을 위한 서명 -> 데이터가 인코딩 되어있긴 하지만, 누구나 디코딩을 할 수 있어서, 데이터 유출에 대한 피해가 있을 수 있다. 그러나 헤더와.. 더보기
[백엔드] 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 # 암호화 알고리즘... 더보기
[POSTMAN]지금까지 작성한 API 문서 = API 명세서로 확인 postman에서 Collection의 … 클릭 > view documentation 클릭 그리고, 우상단의 publish 클릭. (위의 이미지는 이미 publish 한 상태) 그리고, 스크롤해서 밑으로 내려 publish 클릭. ‘URL for published documentation’ 클릭으로 명세서 확인 바로 웹사이트에서 내가 작성한 API 명세서를 확인 할 수 있다. 더보기
코드 프레임 워크 가져오기 / 단위테스트(Unit test) - vscode에서 전체적인 코드 프레임워크는, vscode좌측의 돋보기 모양을 눌러 키워드를 서칭하여, 가져오는 것이 편리하다. 그리고 내가 만드려는 API의 기능에 맞게 일부 코드만 수정하면 좋다. - 그리고, query문은 vscode에서 타이핑 하지 말고, 우선적으로 mysql로 가서 테스트를 해본다. mysql workbench쿼리문 예시: 더보기 update recipe set is_publish = 2 where id = 0; vscode에서의 응용: 더보기 class RecipePublishResource(Resource): # 레시피 공개, 임시저장 # 레시피를 공개한다. def put(self, recipe_id): # put이라는 메소드를 처리하는 함수 # 해당 레시피 아이디를 가지고.. 더보기
[백엔드] Flask: 터미널에 API 진행상황이 안나올 때 문제점: POSTMAN에서 실행하니, 500 Internel 문제라고 하고, vscode 터미널에 API 실행 상황이 공유가 안된다 ( = 에러가 나타나지 않는다) 해결: POSTMAN으로 하나의 API를 실행할 때마다, 터미널에는 API의 실행상황이 나와야한다. 만약에 로컬 서버에 연결이 됐는 데, API를 실행했는데도, 실행상황이 터미널에 표시 되지 않으면, 내가 두개 혹은 그 이상의 터미널에서 동시에 서버가 돌아가는 상황일수도 있다. 서버는 하나만 연결해야한다. 나머지는 정리하자. 더보기