Python Flask框架入门_3.通过token认证验证API的访问权限(数据库版本)

在MySQL数据库day20中创建user表,表结构如下所示:

image

将用户的token和name写入到数据库表user中:

image

安装连接mysql数据库的支持包pymysql:

(.venv) PS D:\PythonProject2> pip install pymysql
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pymysql in d:\pythonproject2\.venv\lib\site-packages (1.1.2)

[notice] A new release of pip is available: 25.1.1 -> 25.2
[notice] To update, run: python.exe -m pip install --upgrade pip
(.venv) PS D:\PythonProject2> 
(.venv) PS D:\PythonProject2> 

将原本代码迭代为从数据库中读取授权码,验证API的访问权限:

import hashlib
import pymysql
from flask import Flask, request, jsonify
app = Flask(__name__)


# 连接MySQL,执行SQL查询语句,返回结果
def fetch_one(sql,params):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='rootpassword', charset="utf8", db='day20')
    cursor = conn.cursor()
    #cursor.execute("select * from user where token=%s", [token, ])
    cursor.execute(sql, params)
    result = cursor.fetchone()
    cursor.close()
    conn.close()
    print("result", result)
    return result

@app.route("/bili", methods=["POST"])
def bili():
    """
    请求URL中携带/bili?token=...
    请求的数据格式要求:{ "ordered_string":"......" }
    :return:
    """
    # 1.token是否为空
    token = request.args.get("token")
    print("token", token)
    if not token:
        return jsonify({"status":False , 'error':"认证失败"})

    # 从数据库表中读取授权码的情况
    # 连接MYSQL执行命令,验证token是否合法
    result = fetch_one("select * from user where token=%s", [token, ])
    if not result:
        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)

通过postman调用带token认证的bili方法示例

image

posted @ 2025-09-09 20:33  赛博郎中  阅读(15)  评论(0)    收藏  举报