kali ini saya akan membuat catatan kalau suatu hari aku lupa jadi bisa liat blog ini jadi berapa hari yang lalu saya iseng belajar flask dan sekalian buat token.
dengan harapan dapat ilmu baru sukurnya sih dapet ilmu baru kalo engga ya ngga masalah yang penting kan ngoding everywhere averything and dimanapun kapanpun what everlah langsung aja deh ini codenya.
from flask import Flask, jsonify
from datetime import datetime, timedelta
from flask_restful import reqparse
from flask_jwt import jwt, jwt_required, current_identity
from werkzeug.security import safe_str_cmp
app = Flask(__name__)
app.debug = True
@app.route('/login', methods=['POST'])
def authenticate():
parser = reqparse.RequestParser()
parser.add_argument('username', type=str)
parser.add_argument('password', type=str)
args = parser.parse_args()
user = args['username']
password = args['password']
payload = {
'exp': datetime.utcnow() + timedelta(days=1, minutes=0),
'iat': datetime.utcnow(),
'sub': user
}
refreshpayload = {
'exp': datetime.utcnow() + timedelta(days=30, minutes=0),
'iat': datetime.utcnow(),
'sub': user
}
access=jwt.encode(payload,'rahasia' , algorithm='HS256')
refresh=jwt.encode(refreshpayload,'seger',algorithm='HS256')
dateexp=datetime.fromtimestamp(payload['exp']).strftime('%c')
return jsonify(token=access.decode(), refresh_token=refresh.decode(), expairy=str(dateexp))
@app.route('/refresh', methods=['POST'])
def refresh_token():
parser = reqparse.RequestParser()
parser.add_argument('token', type=str)
args = parser.parse_args()
token = args['token']
payload = jwt.decode(token, 'seger')
user = payload['sub']
payload = {
'exp': datetime.utcnow() + timedelta(days=1, minutes=0),
'iat': datetime.utcnow(),
'sub': user
}
access=jwt.encode(payload,'rahasia' , algorithm='HS256')
dateexp=datetime.fromtimestamp(payload['exp']).strftime('%c')
return jsonify(token=access.decode(), refresh_token=token, expairy=str(dateexp))
@app.route('/verify', methods=['POST'])
def release():
try:
parser = reqparse.RequestParser()
parser.add_argument('token', type=str)
args = parser.parse_args()
token = args['token']
payload = jwt.decode(token, 'rahasia')
return payload['sub']
except jwt.ExpiredSignatureError:
return 'Signature expired. Please log in again.'
except jwt.InvalidTokenError:
return 'Invalid token. Please log in again.'
if __name__ == '__main__':
app.run(port=2000)
itulah guys kondingan hasil belajarku explanationnya nanti aja ya guys soalnya lagi bingung menyusun kata agar banyak yang paham thanks untuk teman-teman yang sudah membantuku.