군침이 싹 도는 코딩

Flask 에서 JWT 사용 로그인한 유저만 처리할 수 있는 API에 토큰 적용하는 방법 본문

Python/Flask

Flask 에서 JWT 사용 로그인한 유저만 처리할 수 있는 API에 토큰 적용하는 방법

mugoori 2023. 1. 5. 15:54
class RecipeListResource(Resource) :

    # API를 처리하는 함수 개발
    # HTTP Method 를 보고 똑같이 만들어준다

    # jwt 토큰이 필수라는 뜻 : 토큰이 없으면 이 API는 실행이 안된다
    @jwt_required()
    def post(self):
        # 1. 클라이언트가 보내준 데이터를 받아준다
        data = request.get_json()

        # 1-1 헤더에 JWT 토큰이 있으면, 토큰 정보를 받아준다
        user_id = get_jwt_identity()

        # print(data)

        # 2. 이 레시피 정보를 DB에 저장해야한다

        try : 
            ### 1. DB에 연결
            connection = get_connection()

            ### 2. 쿼리문 만들기
            query = '''insert into recipe
                    (name, description, num_of_servings, cook_time, directions, user_id)
                    values
                    ( %s, %s, %s, %s, %s, %s);'''
 
            ### 3. 쿼리에 매칭되는 변수 처리 해준다 (튜플로 넣는다)
            record = ( data["name"],data["description"],data["num_of_servings"],data["cook_time"],data["directions"],user_id)
 
            ### 4. 커서를 가져온다
            cursor = connection.cursor()

            ### 5. 쿼리문을 커서로 실행한다
            cursor.execute(query, record)

            ### 6. 커밋 해줘야 DB에 완전히 반영된다
            connection.commit()

            ### 7. 자원 해제
            cursor.close()
            connection.close()

        except Error as e :
            print(e)
            cursor.close()
            connection.close()

            return { "result":"fail", "error": str(e) }, 500



        # API를 끝낼때는
        # 클라이언트에 보내줄 정보(json)와 http 상태코드를 리턴한다
        return {"result":"success"}, 200

# 기존에 코딩했던 부분에서 토큰을 처리하는 방법은 @jwt_required() 를 넣어 토큰이 없으면 실행할 수 없다는 코드를

넣어준다 그리고 토큰이 있다면 정보를 받아 오라는 user_id = get_jwt_identity() 를 써준다 그 후 밑에 쿼리문을

user_id를 추가시켜주고 레코드에도 user_id를 써준다

 

 

 

 

# 적용할 API로가서 헤더 부분을 누르고 Key는 Authorization으로 Value는 Bearer 로그인시나온토큰

이렇게 써주면 로그인한 유저만 처리할 수 있는 API가 된다