앞선 두 포스팅을 통해 JWT로 id를 암호화해주었다면
JWT를 이용해 토큰값이 있는 회원가입되고 로그인된 유저만
API를 처리할 수 있도록 만들어보자.
class RecipeListResource(Resource):
# restful api 의 method 에 해당하는 함수 작성
# @jwt_required() : 헤더 부분에 토큰이 없으면 처리를 안 해줌
@jwt_required()
def post(self) :
# api 실행 코드를 여기에 작성
# 클라이언트에서, body 부분에 작성한 json 을
# 받아오는 코드
data = request.get_json()
user_id = get_jwt_identity()
# 받아온 데이터를 디비 저장하면 된다.
try :
# 데이터 insert
# 1. DB에 연결
connection = get_connection()
# 2. 쿼리문 만들기
query = '''insert into recipe
(name, description, cook_time, directions, user_id)
values
( %s , %s , %s ,%s, %s);'''
record = (data['name'], data['description'], data['cook_time'], data['directions'], user_id )
# 3. 커서를 가져온다.
cursor = connection.cursor()
# 4. 쿼리문을 커서를 이용해서 실행한다.
cursor.execute(query, record)
# 5. 커넥션을 커밋해줘야 한다 => 디비에 영구적으로 반영하라는 뜻
connection.commit()
# 6. 자원 해제
cursor.close()
connection.close()
except mysql.connector.Error as e :
print(e)
cursor.close()
connection.close()
return {"error" : str(e)}, 503
return {"result" : "success"}, 200
위는 로그인한 유저만 레시피를 수정할 수 있도록 API를 구성한 코드이다. 중요한 부분은 맨처음 부분이다.
class RecipeListResource(Resource):
# restful api 의 method 에 해당하는 함수 작성
# @jwt_required() : 헤더 부분에 토큰이 없으면 처리를 안 해줌
@jwt_required()
def post(self) :
# api 실행 코드를 여기에 작성
# 클라이언트에서, body 부분에 작성한 json 을
# 받아오는 코드
data = request.get_json()
user_id = get_jwt_identity()
@jwt_required()를 함수가 시작되기 전에 작성해두면 해당 리소스는 클라이언트에서 요청할 때 헤더 부분에 토큰값이 없으면 처리를 하지 않도록 해준다.
다시 말하면 로그인하여 암호화된 id 값이 없으면 글을 작성할 수 없게 만든 것이다.
그 아래
user_id = get_jwt_identity()
부분은 암호화된 id를 다시 복호화하는 코드이다.
다시 복호화된 id로 필요한 데이터를 찾을 수 있다.
'백엔드' 카테고리의 다른 글
JWT 로그아웃 API 만들기 (0) | 2022.06.21 |
---|---|
Flask 에서 JWT 사용하는 방법 (4) - 토큰 유효기간 만료시키는 방법 (0) | 2022.06.20 |
Flask 에서 JWT 사용하는 방법 (2) - 회원가입 / 로그인 API 에서, 토큰 생성하고 처리하기 (0) | 2022.06.20 |
Flask 에서 JWT 사용하는 방법 (1) - 설치 방법 (0) | 2022.06.20 |
포스트맨(PostMan) 사용법 (0) | 2022.06.17 |
댓글