로그인 API 만들기
app.py에 삽입
from resources.user import UserLoginResource
api.add_resource( UserLoginResource, '/users/login')
app.py 파일에 추가
from flask_jwt_extended import JWTManager
from config import Config
# app = Flask(__name__) 아래에 추가
# 환경변수 셋팅
app.config.from_object(Config)
# JWT 매니저 초기화
jwt = JWTManager(app)
# api = Api(app) 위에 추가
user.py에 삽입
from utils import check_password #4에서 삽입
from flask_jwt_extended import create_access_token
class UserLoginResource(Resource) :
def post(self) :
# 1. 클라이언트로부터 데이터를 받는다.
data = request.get_json()
if 'email' not in data or 'password' not in data:
return {'result' : 'fail'}, 400
if data['email'].strip() == '' or data['password'].strip() == '':
return {'result' : 'fail'}, 400
# 2. DB로부터 이메일에 해당하는 유저 정보를 가져온다.
try :
connection = get_connection()
query = '''select *
from user
where email = %s ;'''
record = ( data['email'] , )
cursor = connection.cursor(dictionary=True)
cursor.execute(query, record)
result_list = cursor.fetchall()
print(result_list)
cursor.close()
connection.close()
except Error as e:
if cursor is not None:
cursor.close()
if connection is not None:
connection.close()
return {'result':'fail', 'error':str(e)},500
# 3. 회원인지 확인한다.
if result_list == [] :
return {'result' : 'fail'} , 401
# 4. 비밀번호를 체크한다.
# 유저가 입력한 비번 data['password']
# DB에 암호화된 비번 result_list[0]['password']
isCorrect = check_password(data['password'] , result_list[0]['password'])
if isCorrect == False :
return {'result' : 'fail'} , 401
# 5. 유저아이디를 가져온다.
user_id = result_list[0]['id']
# 6. JWT 토큰을 만든다.
access_token = create_access_token(user_id)
# 7. 클라이언트에 응답한다.
return {'result' : 'success', 'access_token':access_token}
로그인 한 유저만 사용할 수 있도록 API에 토큰 적용하기
recipe.py에 삽입
from flask_jwt_extended import get_jwt_identity, jwt_required
(1). Class RecipeListResource 의 def post : 데이터 생성하기
(2). Class RecipeListResource 의 def get : 데이터 모두 가져오기
(3). class RecipeResource의 def get : 특정 id 데이터 가져오기
# 2-2 삽입하고 , # 3 ~ 삭제하기
(4). class RecipeResource의 def put : 특정 id 데이터 수정하기
(5). class RecipeResource의 def delete : 특정 id 데이터 삭제하기
(6). class RecipePublishResource의 def put : 레시피 발행 (publish =1)
(7). class RecipePublishResource의 def delete : 레시피 발행 취소 (publish =0) : 임시저장
저장하고 flask run
>>>> 사용할 API의 Headers를 변경해준다.
Body에 Value를 Bearer + 암호키 넣고 send하면 success 된다. (암호키는 로그인에서 가져온 암호키를 복붙한다)
>>> 나머지도 변경해준다
'RestFul API' 카테고리의 다른 글
JWT 인증 토큰의 로그인 만료 시간 설정하기 (0) | 2024.05.22 |
---|---|
JWT(JSON WEP TOKEN) 암호화 로그아웃 API 만들기 (0) | 2024.05.22 |
JWT 암호화(인증토큰) 사용하여 회원가입 API에 적용하기 (0) | 2024.05.22 |
MySQL DB와 Postman을 연동하여 회원가입 API 만들기 (0) | 2024.05.22 |
Hashing 알고리즘 : 단방향 암호화 실행하기 : utils 파일 만들기 (0) | 2024.05.22 |