Python Flask RESTful API -- HTTPAuth
1、编写背景
使用Flask 编写的RESTful API,都是完全开放的,任何客户端都能随意调用,如果只是纯粹编写Demo级别的API,倒无所谓,如果企业级开发,必然会涉及到API的安全调用问题, 接下来我们一起探讨这个话题。
2、Flask-HTTPAuth
我们引入 Flask-HTTPAuth 安全机制,客户端要使用API需要录入用户名和密码。
2.1 创建项目
Pycharm创建项目Flask-HTTPAUTH:
项目结构:
2.2 引入Flask-HTTPAUTH
打开终端,安装Flask-HTTPAuth:
pip install Flask-HTTPAuth
使用pip list检查是否安装的组件列表
pip list
2.3 编写代码
在Flask-HTTPAUTH.py文件编写代码:
# coding=UTF-8 from flask import Flask #https://github.com/miguelgrinberg/flask-httpauth #安装flask-httpauth后,在PyCharm-Preferences-Project-Interpreter-增加flask-httpauth from flask_httpauth import HTTPBasicAuth app = Flask(__name__) auth = HTTPBasicAuth() users = { "john":"hello", "susan":"bye" } @auth.get_password def get_pwd(username): if username in users: return users.get(username) return None @app.route('/') @auth.login_required def index(): return 'Hello %s!!' % auth.username() if __name__ == '__main__': app.run()
2.4 运行
点击运行,报错:No module named flask_httpauth,后来找出问题了,虽然我们安装好了Flask-HTTPAuth,但项目没有引入。
PyCharm -> Preferences -> Project -> Interpreter -> 增加flask-httpauth
增加前:
增加Flask-HTTPAuth,点击下面的 + ,搜索组件,输入 Flask-HTTP,选中Flask-HTTPAuth,点击下面的Install Package:
增加后,点击OK,再次运行,成功: