서론
웹 애플리케이션에서 사용자 계정의 보안을 유지하고 관리하기 위해서는 로그인 기록을 저장하고 관리하는 것이 중요합니다. 이를 위해 파이썬과 JWT(JSON Web Token)를 함께 사용하여 간단하고 안전한 로그인 기록 저장 및 관리 방법을 소개하겠습니다.
JWT란 무엇인가요?
JWT는 웹 애플리케이션 간에 안전한 정보를 전송하기 위해 사용되는 토큰 기반의 인증 방식입니다. JWT는 서버에서 생성되어 클라이언트에게 전달되며, 클라이언트는 이 토큰을 사용하여 인증을 요청하거나 정보를 전송할 수 있습니다. JWT는 정보를 암호화하여 안전하게 전송하므로 훌륭한 인증 방식으로 사용됩니다.
로그인 기록 저장하기
가장 먼저 할 일은 로그인 기록을 저장할 데이터베이스를 설정하는 것입니다. 예를 들어 MySQL 데이터베이스를 사용한다고 가정해봅시다. 파이썬에서 MySQL과 연결하기 위해 mysql-connector-python
모듈을 사용할 수 있습니다.
import mysql.connector
# MySQL 연결 설정
mydb = mysql.connector.connect(
host="localhost",
user="username",
password="password",
database="databasename"
)
# 로그인 기록 저장 함수
def save_login_history(user_id, login_time):
cursor = mydb.cursor()
sql = "INSERT INTO login_history (user_id, login_time) VALUES (%s, %s)"
val = (user_id, login_time)
cursor.execute(sql, val)
mydb.commit()
cursor.close()
위의 코드는 MySQL에 연결하고, save_login_history
함수를 사용하여 사용자 아이디와 로그인 시간을 login_history
테이블에 저장하는 기능을 수행합니다. 필요에 따라 테이블 구조를 수정하여 다른 정보도 저장할 수 있습니다.
JWT를 사용하여 로그인 기록에 접근하기
로그인 기록에 접근하기 위해서는 클라이언트로부터 전달받은 JWT를 해독하여 사용자 아이디를 추출해야 합니다. 이를 위해 PyJWT
모듈을 사용할 수 있습니다.
import jwt
# JWT 검증 함수
def verify_jwt(jwt_token):
try:
payload = jwt.decode(jwt_token, 'secret_key', algorithms=['HS256'])
return payload['user_id']
except jwt.ExpiredSignatureError:
return 'expired'
except jwt.InvalidTokenError:
return 'invalid'
위의 코드는 전달받은 JWT를 검증하여 유효한 토큰인 경우 사용자 아이디를 반환하고, 만료된 토큰인 경우 ‘expired’, 잘못된 토큰인 경우 ‘invalid’를 반환합니다.
# JWT 검증 예제
jwt_token = 'your_jwt_token_here'
user_id = verify_jwt(jwt_token)
if user_id == 'expired':
print('토큰이 만료되었습니다.')
elif user_id == 'invalid':
print('잘못된 토큰입니다.')
else:
print('사용자 아이디:', user_id)
결론
이렇게 파이썬과 JWT를 사용하여 웹 애플리케이션의 계정 보안 로그인 기록을 저장하고 관리할 수 있습니다. 로그인 기록을 데이터베이스에 저장하고 JWT를 사용하여 사용자를 인증하는 방법은 보안에 강력한 방법입니다. 이를 통해 웹 애플리케이션의 보안을 한 단계 높일 수 있습니다.
#보안 #JWT