mindphp เขียน: ↑01/06/2024 11:12 am
ลองเขียนโค้ดเชื่อมต่อง่ายๆ และ รันด้วย command ดูก่อน
ถ้ารันได้ ค่อยลองใช้ โปรแกรมอื่นมาเรียกให้ทำงานแบบโค้ดตัวอย่างที่ยกมา
ได้รันโค้ดเชื่อมต่อง่ายๆ ได้สำเร็จแล้ว
โค้ด: เลือกทั้งหมด
@app.route("/login", methods=["POST"])
def login():
username = request.json.get("username", None)
password = request.json.get("password", None)
if username != "test" or password != "test":
return jsonify({"msg": "Bad username or password"}), 401
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token)
สามารถ gen ออกมาสำเร็จ
โค้ด: เลือกทั้งหมด
curl -X POST http://127.0.0.1:5000/login -H "Content-Type: application/json" -d "{\"username\": \"test\", \"password\": \"test\"}"
ผลที่ได้
โค้ด: เลือกทั้งหมด
{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcxNzk5NDU0NiwianRpIjoiNzk5YzcyMDItYmI3OC00NmI0LTllYmItZTJlZTdlODQzNjUzIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6InRlc3QiLCJuYmYiOjE3MTc5OTQ1NDYsImNzcmYiOiJiNDA2YWE5ZS1kZDI5LTQxMGYtYmVhNS0zNjRhNmI5ZTI2OGMiLCJleHAiOjE3MTc5OTU0NDZ9.gK0qzZmn74C7xEu7WmZ-E5QbQsKZh3_KPC1NKV8t0ic"}
หากแต่เมื่อให้ลองประยุกต์กับตัวงาน ไม่สำเร็จ error เหมือนเดิม
ในส่วนที่สันนิฐานมีผล
ส่วนแรกจะเป็นตอนทำงานบน python2
โค้ด: เลือกทั้งหมด
def authenticate(username, password):
user = username_table.get(username, None)
if user and compare_digest(user.password.encode('utf-8'), password.encode('utf-8')) and user.active == True:
return user
def identity(payload):
user_id = payload['identity']
return userid_table.get(user_id, None)
jwt = JWT(app, authenticate, identity)
พอตอนรันบน python ต้องเรียกใช้จาก
โค้ด: เลือกทั้งหมด
from flask_jwt_extended import JWTManager as JWT
โค้ดรู้ดที่เรียกใช้ตอนเรียกทำงานในส่วนนี้ทำงานสำเร็จบน python2 แต่ไม่สำเร็จ บนไพทอน 3
โค้ด: เลือกทั้งหมด
@app.route('/gentokenuser')
@auth.login_required
def gentokenuser():
cur = con.cursor()
sql = """SELECT * FROM "user" WHERE username = '%s';""" % auth.username()
sql = sql.encode('utf-8')
try:
cur.execute(sql)
resufts = cur.fetchone()
link_auth = 'http://' + ip + ':' + port + '/auth'
headers = {
'Content-Type': 'application/json',
}
data = '{"username": "%s","password": "%s" }' % (resufts[3], resufts[4])
response = requests.post(link_auth, headers=headers, data=data)
token_user = response.json()['access_token']
sql_update = """UPDATE public."user" SET token='%s' WHERE id =%d;""" % (token_user, int(resufts[0]))
sql = sql_update.encode('utf-8')
cur.execute(sql)
con.commit()
except:
return 'Error : %s' % p.DatabaseError
return jsonify({'access_token': token_user})