Python Flask RESTful API -- HTTPAuth

1、编写背景

使用Flask 编写的RESTful API,都是完全开放的,任何客户端都能随意调用,如果只是纯粹编写Demo级别的API,倒无所谓,如果企业级开发,必然会涉及到API的安全调用问题, 接下来我们一起探讨这个话题。

2、Flask-HTTPAuth

我们引入 Flask-HTTPAuth 安全机制,客户端要使用API需要录入用户名和密码。

2.1 创建项目

在IDE Pycharm中创建项目名为Flask-HTTPAUTH:

Python Flask RESTful API -- HTTPAuth_第1张图片
image

项目结构:

Python Flask RESTful API -- HTTPAuth_第2张图片
image

2.2 引入Flask-HTTPAUTH

打开终端,安装Flask-HTTPAuth:
pip install Flask-HTTPAuth

Python Flask RESTful API -- HTTPAuth_第3张图片
image

安装完毕,接着使用
pip list
显示组件列表,检查是否成功安装。

Python Flask RESTful API -- HTTPAuth_第4张图片
image

2.3 编写代码

在项目新增python文件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 = {
    "kingly":"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

Python Flask RESTful API -- HTTPAuth_第5张图片
image

增加Flask-HTTPAuth,点击下面的 + ,搜索组件,输入 Flask-HTTP,选中Flask-HTTPAuth,点击下面的Install Package:

Python Flask RESTful API -- HTTPAuth_第6张图片
image

增加后,点击OK,再次运行,成功,打完收工!

Python Flask RESTful API -- HTTPAuth_第7张图片
image

你可能感兴趣的:(Python Flask RESTful API -- HTTPAuth)