首页 > 解决方案 > Flask 对 API 的安全性,后端没有 db

问题描述

我是堆栈溢出的新手。我使用 Flask 开发了一个 API,但我想为其添加安全性,以便只有拥有一些密钥的人才能运行它。后端没有数据库,是否有任何基于令牌或其他最新安全方式运行 API?例如: app.route('/test') 如果我使用 local_host/test 运行它,那么它就会触发,就像团队中拥有相同访问权限的任何人都不应该那么容易运行,除非我(生产者)提供消费者的一些密钥,消费者使用该密钥连接我的 API。

标签: flask

解决方案


最好的方法是使用基本身份验证。这意味着每次有人向您的端点发出请求时,他们都需要在请求的标头中提供用户名和密码。

一个很棒的最小示例位于此处:https ://flask-httpauth.readthedocs.io/en/latest/

from flask_httpauth import HTTPBasicAuth

app = Flask(__name__)
auth = HTTPBasicAuth()

@auth.verify_password
def verify_password(username, password):
    if username == 'approved_username' and password == 'correct-password':
        return True
    return False

@app.route('/')
@auth.login_required
def index():
    return "Hello, %s!" % auth.username()

if __name__ == '__main__':
    app.run()

我通过删除动态用户查找对其稍作修改,使其更加简单。

要使用它,您只需将auth.login_required装饰器添加到您希望保护的任何路线。


推荐阅读