pip install flask-jwt-extended
-> 먼저, 인증 토큰 발급을 위한 라이브러리를 설치한다.
class Config :
JWT_SECRET_KEY = 'Hi'
JWT_ACCESS_TOKEN_EXPIRES = False
PROPAGATE_EXCEPTIONS = True
-> git에 올라가지 않게 보안을 위해 만든 Config 클래스 안에 JWT 관련 변수를 세팅한다.
from flask import Flask
from flask_jwt_extended import JWTManager
from flask_restful import Api
from config import Config
# 환경변수 세팅
app.config.from_object(Config)
# JWT 매니저를 초기화
JWTManager(app)
-> app.py에 코드 추가
def post(self) :
# 1. 클라이언트가 보낸 데이터를 받는다.
data = request.get_json()
# 2. 이메일 주소 형식이 올바른지 확인한다.
try :
validate_email(data["email"])
except EmailNotValidError as e :
print(e)
return {"error" : str(e)}, 400
# 3. 비밀번호 길이가 유효한지 체크한다.
# 만약, 비번이 4자리 이상 14자리 이하라고 한다면 확인한다.
if len(data["password"]) < 4 or len(data["password"]) > 14 :
return {"error" : "비밀번호 길이가 올바르지 않습니다."}, 400
# 4. 비밀번호를 암호화 한다.
password = hash_password(data["password"])
# 5. DB의 user 테이블에 저장
try :
connection = get_connection()
query = '''
insert into user
(username, email, password)
values
(%s, %s, %s);
'''
record = (data["username"], data["email"], password)
cursor = connection.cursor()
cursor.execute(query, record)
connection.commit()
### 테이블에 방금 insert한 데이터의 id를 가져오는 방법
user_id = cursor.lastrowid
cursor.close()
connection.close()
except Error as e :
print(e)
cursor.close()
connection.close()
return {"result" : "fail", "error" : str(e)}, 500
# 6. user 테이블의 id로 JWT 토큰을 만들어야 한다.
access_token = create_access_token(user_id)
# 7. 만든 JWT 토큰을 클라이언트에게 준다.
return {"result" : "success", "access_token" : access_token}, 200
-> create_access_token() 함수로 JWT 토큰을 생성한다.
'Restful API' 카테고리의 다른 글
[Restful API] 로그인한 유저만 처리할 수 있는 API에 토큰 적용하는 방법 (1) | 2023.12.07 |
---|---|
[Restful API] JWT 토큰 유효시간 만료 방법 (1) | 2023.12.07 |
[Restful API] 회원가입할 때 비밀번호 암호화 하는 법 pbkdf2_sha256 (1) | 2023.12.07 |
[Restful API] Config 파일 만들기 (1) | 2023.12.06 |
[Restful API] Restful API 개발 할 때, MySQL 접속을 위한 유저를 따로 만들기 (0) | 2023.12.06 |