flask - Flask 对 API 的安全性,后端没有 db
问题描述
我是堆栈溢出的新手。我使用 Flask 开发了一个 API,但我想为其添加安全性,以便只有拥有一些密钥的人才能运行它。后端没有数据库,是否有任何基于令牌或其他最新安全方式运行 API?例如: app.route('/test') 如果我使用 local_host/test 运行它,那么它就会触发,就像团队中拥有相同访问权限的任何人都不应该那么容易运行,除非我(生产者)提供消费者的一些密钥,消费者使用该密钥连接我的 API。
解决方案
最好的方法是使用基本身份验证。这意味着每次有人向您的端点发出请求时,他们都需要在请求的标头中提供用户名和密码。
一个很棒的最小示例位于此处: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
装饰器添加到您希望保护的任何路线。
推荐阅读
- python - heroku git:remote -a 命令不起作用
- java - 如何在webflux中将spring boot websocket文本消息转换为自定义java对象(bean或DTO)
- android - 如何使用`flow`从`repository`到`viewModel`获取firebase`childEventListener`的持续更新?
- android - 插入新数据后 ListView 不更新
- c++ - 使用 std::error_code - 在可能的错误情况后我应该调用 .clear() 吗?
- react-native - React Native 上 Android 设备的布局/尺寸问题
- javascript - 在 Gatsby,Graphql 中以 HH:MM:SS 格式查找持续时间字段的最大值
- python - 不知道为什么我得到“TypeError:只能将str(不是“int”)连接到str”
- python - 在 3d numpy 数组中的一系列 2d 子数组上执行函数的更有效方法是什么?
- hadoop - n gram Wordcount prblem:Mapreduce链接多个地图