Flask-HTTPAuth基础案例

介绍

Flask-HTTPAuth 是一个基于全局的接口的校验登录

安装

pip install flask-httpauth

使用

flask-httpauth 提供了基于装饰器类型的视图函数校验,也可也结合falsk-restful进行接口类的校验,并且提供了两种校验的策略,分别是:

用户名密码校验

flask-httpauth使用者可以通过使用auth.verify_password从写校验函数,然后调用login_required方法使用

案例一:直接使用

from flask_httpauth import HTTPBasicAuth

auth = HTTPBasicAuth()

#设置校验,这里可以设置基于用户名和密码的自定义校验
@auth.auth.verify_password
def verify_password(username,password):
    if token:
        return True
    else:
        return False
        
@app.route("/take_picture/",methods = ["get","post"])
@app.login_require #这里使用方法启用校验
def take_pricture():
	.......
    return jsonify(jsondata)        

案例二:配合视图类使用

from flask_httpauth import HTTPBasicAuth

auth = HTTPBasicAuth()

#设置校验,这里可以设置基于用户名和密码的自定义校验
@auth.auth.verify_password
def verify_password(username,password):
    if token:
        return True
    else:
        return False
        
class UserApi(Resource):
    decorators = [auth.login_required] #校验,类似装饰器函数
    ......

token校验

实际上大部分接口请求是通过token来校验身份的,并不是通过用户名和密码,所以可以有下面的使用方法

案例一:直接使用

from flask_httpauth import HTTPTokenAuth
from package.jwt_token import check_token
auth = HTTPTokenAuth(scheme='JWT') #auth.login_required

#设置校验,这里可以设置基于用户名和密码的自定义校验
@auth.verify_token
def verify_token(token):
    if check_token(token):
        return True
    else:
        return False

@app.route("/take_picture/",methods = ["get","post"])
@app.login_require #这里使用方法启用校验
def take_pricture():
	.......
    return jsonify(jsondata)   

案例二:配合视图类使用

from flask_httpauth import HTTPTokenAuth
from package.jwt_token import check_token
auth = HTTPTokenAuth(scheme='JWT') #auth.login_required

@auth.verify_token
def verify_token(token):
    print(token)
    if check_token(token):
        return True
    else:
        return False

class UserApi(Resource):
    decorators = [auth.login_required] #校验,类似装饰器函数
    def get(self,id):
        key_words = request.args.get("key_words")
        pass
        return "get 123"
    def post(self):
        return "post 123"
    def put(self,id):
        return "put 123"
    def delete(self,id):
        return "delete 123"
posted @ 2021-03-04 17:59  大泽九章  阅读(248)  评论(0编辑  收藏  举报