Flask-HTTP验证方法

本文介绍如何使用pip安装Flask-HTTPAuth扩展,并演示了如何在Flask应用中实现基本认证和令牌认证。文章详细展示了如何通过HTTPBasicAuth进行用户名密码验证及通过HTTPTokenAuth进行令牌验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装和启用

先通过pip来安装扩展:Flask-HTTPAuth

 pip install Flask-HTTPAuth

创建对象,并设置自定义处理方法

根目录下

app\token.py

from flask import jsonify, g,current_app
from flask_httpauth import HTTPBasicAuth,HTTPTokenAuth
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from app.db import Db
import hashlib

#认证账户名和密码
auth = HTTPBasicAuth()

#认证token
token_auth = HTTPTokenAuth(scheme='Bearer')


@auth.verify_password
def verify_password(username, password):
    app=current_app._get_current_object()
    password = hashlib.new('md5',password.encode('utf8')).hexdigest()
    admin = Db.table('bn_admin_user').where({'username':username,'password':password}).find()
    if admin:
        g.username = username
        g.admin_id = admin['id']
        return True
    return False


@auth.error_handler
def unauthorized():
    return jsonify({'code':'403','msg': '账户名或者密码错误'}), 403


@token_auth.verify_token
def verify_token(token):
    app = current_app._get_current_object()
    s = Serializer(app.config['SECRET_KEY'])
    try:
        data = s.loads(token)
        g.username = data['username']
        g.admin_id = data['admin_id']
        return True
    except:
        return False


@token_auth.error_handler
def unauthorized():
    return jsonify({'code':'403','msg': 'token认证失败'}), 403









在模型中使用蓝图设置路由并绑定验证

from flask import g,jsonify
from flask import Blueprint
from app.token import token_auth
from app.auth import ver_auth
main = Blueprint('main',__name__)



#请求路由前处理绑定
@main.before_request
#验证token装饰器
@token_auth.login_required
#权限验证
@ver_auth




@main.route('/',methods=['GET','POST'])
def index():
    return  '首页'


@main.route('/aa',methods=['GET','POST'])
def aa():
    return  '测试'




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值