Python Flask框架入门_2.通过token认证验证API的访问权限
增加 POST 方法 bili,获取传入的 ordered_string 参数,调用算法生成 sign 签名返回 :import hashlib
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/bili", methods=["POST"])
def bili():
"""
请求的数据格式要求:{ "ordered_string":"......" }
:return:
"""
ordered_string = request.json.get("ordered_string")
if not ordered_string:
return jsonify({"status": False, "error": "参数错误"})
# 调用核心算法,生成sign签名
encrypt_string = ordered_string + "560c52ccd288fed045859ed18bffd973"
obj = hashlib.md5(encrypt_string.encode('utf-8'))
sign = obj.hexdigest()
return jsonify({"status": True, "data": sign})
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000)postman 中调用 bili 方法示例:
通过调用 API 时传入的 token 参数值与授权码对比,验证用户是否具有API的访问权限:
import hashlib
from flask import Flask, request, jsonify
app = Flask(__name__)
# 将授权码信息直接预存到字典中
USER_DICT = {"fec22f96-2783-414a-a6e3-991d357c96e6":"李杨",
"18bc44aa-76c9-43e7-a5c9-3aeb7884d6f1":"张三"}
# 从文件中读取授权码信息存入字典中并返回
def get_user_dict():
info_dict = {}
with open("db.txt",mode='r',encoding='utf-8') as f:
for line in f :
line = line.strip()
print(line)
token, name = line.split(",")
print(token, name)
info_dict = name
returninfo_dict
@app.route("/bili", methods=["POST"])
def bili():
"""
请求URL中携带/bili?token=...
请求的数据格式要求:{ "ordered_string":"......" }
:return:
"""
token = request.args.get("token")
if not token:
return jsonify({"status":False , 'error':"认证失败"})
# 从文件中读取授权码的情况
user_dict = get_user_dict()
if token not in user_dict:
return jsonify({"status":False , 'error':"认证失败"})
# 从字典中读取授权码的情况
if token not in USER_DICT:
return jsonify({"status":False , 'error':"认证失败"})
ordered_string = request.json.get("ordered_string")
if not ordered_string:
return jsonify({"status": False, "error": "参数错误"})
# 调用核心算法,生成sign签名
encrypt_string = ordered_string + "560c52ccd288fed045859ed18bffd973"
obj = hashlib.md5(encrypt_string.encode('utf-8'))
sign = obj.hexdigest()
# 返回签名
return jsonify({"status": True, "data": sign})
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000)授权文件名 db.txt ,授权文件内容如下:
fec22f96-2783-414a-a6e3-991d357c96e6,李杨
18bc44aa-76c9-43e7-a5c9-3aeb7884d6f1,张三 postman 中调用带 token 认证的 bili 方法示例:
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]