裆趾针 发表于 2025-9-8 19:16:31

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]
查看完整版本: Python Flask框架入门_2.通过token认证验证API的访问权限