找回密码
 立即注册
首页 业界区 安全 Python Flask框架入门_2.通过token认证验证API的访问权 ...

Python Flask框架入门_2.通过token认证验证API的访问权限

裆趾针 昨天 19:16
增加 POST 方法 bili,获取传入的 ordered_string 参数,调用算法生成 sign 签名返回 :
  1. import hashlib
  2. from flask import Flask, request, jsonify
  3. app = Flask(__name__)
  4. @app.route("/bili", methods=["POST"])
  5. def bili():
  6.     """
  7.     请求的数据格式要求:{ "ordered_string":"......" }
  8.     :return:
  9.     """
  10.     ordered_string = request.json.get("ordered_string")
  11.     if not ordered_string:
  12.         return jsonify({"status": False, "error": "参数错误"})
  13.     # 调用核心算法,生成sign签名
  14.     encrypt_string = ordered_string + "560c52ccd288fed045859ed18bffd973"
  15.     obj = hashlib.md5(encrypt_string.encode('utf-8'))
  16.     sign = obj.hexdigest()
  17.     return jsonify({"status": True, "data": sign})
  18. if __name__ == '__main__':
  19.     app.run(host="127.0.0.1",port=5000)
复制代码
postman 中调用 bili 方法示例
1.png

通过调用 API 时传入的 token 参数值与授权码对比,验证用户是否具有API的访问权限:
  1. import hashlib
  2. from flask import Flask, request, jsonify
  3. app = Flask(__name__)
  4. # 将授权码信息直接预存到字典中
  5. USER_DICT = {"fec22f96-2783-414a-a6e3-991d357c96e6":"李杨",
  6. "18bc44aa-76c9-43e7-a5c9-3aeb7884d6f1":"张三"}
  7. # 从文件中读取授权码信息存入字典中并返回
  8. def get_user_dict():
  9.     info_dict = {}
  10.     with open("db.txt",mode='r',encoding='utf-8') as f:
  11.         for line in f :
  12.             line = line.strip()
  13.             print(line)
  14.             token, name = line.split(",")
  15.             print(token, name)
  16.             info_dict[token] = name
  17.     return  info_dict
  18. @app.route("/bili", methods=["POST"])
  19. def bili():
  20.     """
  21.     请求URL中携带/bili?token=...
  22.     请求的数据格式要求:{ "ordered_string":"......" }
  23.     :return:
  24.     """
  25.     token = request.args.get("token")
  26.     if not token:
  27.         return jsonify({"status":False , 'error':"认证失败"})
  28.     # 从文件中读取授权码的情况
  29.     user_dict = get_user_dict()
  30.     if token not in user_dict:
  31.         return jsonify({"status":False , 'error':"认证失败"})
  32.     # 从字典中读取授权码的情况
  33.     if token not in USER_DICT:
  34.         return jsonify({"status":False , 'error':"认证失败"})
  35.     ordered_string = request.json.get("ordered_string")
  36.     if not ordered_string:
  37.         return jsonify({"status": False, "error": "参数错误"})
  38.     # 调用核心算法,生成sign签名
  39.     encrypt_string = ordered_string + "560c52ccd288fed045859ed18bffd973"
  40.     obj = hashlib.md5(encrypt_string.encode('utf-8'))
  41.     sign = obj.hexdigest()
  42.     # 返回签名
  43.     return jsonify({"status": True, "data": sign})
  44. if __name__ == '__main__':
  45.     app.run(host="127.0.0.1",port=5000)
复制代码
授权文件名 db.txt ,授权文件内容如下:
  1. fec22f96-2783-414a-a6e3-991d357c96e6,李杨
  2. 18bc44aa-76c9-43e7-a5c9-3aeb7884d6f1,张三
复制代码
 postman 中调用带 token 认证的 bili 方法示例
2.png

 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册