250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 텐서플로우
- kubernetes
- numpy
- paper review
- Docker
- vue.js
- 파이토치
- Tkinter
- POD
- 데이터베이스
- 장고
- OpenCV
- Computer Vision
- 논문 리뷰
- GUI
- k8s
- Deep Learning
- Django
- yaml
- pytorch
- tensorflow
- MariaDB
- 파이썬
- Python
- 그래픽 유저 인터페이스
- 컴퓨터 비전
- Web Programming
- 딥러닝
- FLASK
- 웹 프로그래밍
Archives
- Today
- Total
Maxima's Lab
[Flask] Json Web Token (JWT) 사용 방법 - (Token 생성 및 접근) 본문
728x90
SMALL
안녕하세요, 오늘은 Vue.js 프로젝트에서 Json Web Tokens (JWT)를 사용하는 방법에 대해서 알아보겠습니다.
Backend에서는 Flask를 사용하여 Token을 생성할 예정입니다.
먼저, 다음과 같이 파이썬 패키지를 설치합니다.
pip install flask flask_cors flask_apscheduler flask[async] Flask-SoketIO
pip install Flask-JWT-Extented python-dotenv
import os
from flask_socketio import SocketIO, emit
from flask import Flask, request, jsonify, render_template, redirect, session, g
from flask_cors import CORS
from flask_apscheduler import APScheduler
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity, verify_jwt_in_request
from dotenv import load_dotenv
load_dotenv()
class Config:
SCHEDULE_API_ENABLED = True
app = Flask(__name__)
app.config.from_object(Config())
jwt = JWTManager(app)
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')
app.config['JWT_SECRET_KEY'] = os.getenv('JWT_SECRET_KEY')
CORS(app, resources={r'/*': {'origins' : '*'}})
# user 및 비밀번호 설정
users = {"test": "testpw"}
# Route 설정 및 JWT token 생성
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username', None)
password = request.json.get('password', None)
if not username or not password:
return jsonify({"msg": "잘못된 요청"}), 400
if username not in users or users[username] != password:
return jsonify({"msg": "유저 또는 비밀번호 잘못된 입력"}), 401
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
위의 코드에서 다음과 같은 명령어로 token에 접근할 수 있습니다.
curl -X POST -H "Content-Type: application/json" -d '{"username": "test", "password": "testpW' http://127.0.0.1:5000/login
해당 명령어 입력에 따른 결과는 다음과 같습니다.
{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcxNjI5OTcxNSwianRpIjoiMzU1MmQ2MGUtZTIzMy00NWQyLWE4ZTEtZTNiMjYwNGUwOGM1IiwidHlwZSI6ImFjY2VzcyIsInN1YiI6InRlc3R1c2VyIiwibmJmIjoxNzE2Mjk5NzE1LCJjc3JmIjoiZjFkMmMyYWQtZDEwZi00NzYzLWJkN2ItMmM1NTIzZDZmOGNhIiwiZXhwIjoxNzE2MzAwNjE1fQ.ZZIhJKC3yis-KusJIC6Z7oTu69dkTrB0Xi5gtsAOff4"}
위의 access_token은 POST 할때 마다 다른 token이 생성되게 됩니다.
지금까지, Flask에서 Toekn을 생성하고 접근하는 방법에 대해서 알아보았습니다.
감사드립니다.
728x90
LIST
'Web Programming' 카테고리의 다른 글
[Vue.js] PrimeVue 사용하는 방법 (UI Component 라이브러리) (0) | 2024.04.30 |
---|---|
[Vue.js] Material Design Icons (MDI) 사용법 (0) | 2024.04.29 |
[Database, DB] psycopg2 패키지를 활용하여 PostgreSQL 사용하는 방법 (Table 생성, 삭제, Data 초기화) (0) | 2024.04.17 |
[Database, DB] PostgreSQL & DBeaver Community 설치 및 사용 방법 (0) | 2024.04.15 |
[Vue.js 3 + Vuetify 3] Data table (Component) 사용법 (0) | 2024.03.12 |
Comments