Flask-HTTPAuth 使用教程

Flask-HTTPAuth 使用教程

httpauthHTTP Authentication middlewares项目地址:https://gitcode.com/gh_mirrors/htt/httpauth

项目介绍

Flask-HTTPAuth 是一个 Flask 扩展,用于简化在 Flask 路由中使用 HTTP 认证的过程。它支持多种认证方式,包括基本认证(Basic Authentication)、摘要认证(Digest Authentication)和令牌认证(Token Authentication)。Flask-HTTPAuth 可以帮助开发者快速实现安全的路由保护,确保只有经过认证的用户才能访问特定的资源。

项目快速启动

安装 Flask-HTTPAuth

首先,你需要安装 Flask 和 Flask-HTTPAuth:

pip install Flask Flask-HTTPAuth

基本认证示例

以下是一个使用 HTTP 基本认证保护路由 / 的示例应用程序:

from flask import Flask
from flask_httpauth import HTTPBasicAuth
from werkzeug.security import generate_password_hash, check_password_hash

app = Flask(__name__)
auth = HTTPBasicAuth()

users = {
    "john": generate_password_hash("hello"),
    "susan": generate_password_hash("bye")
}

@auth.verify_password
def verify_password(username, password):
    if username in users and check_password_hash(users.get(username), password):
        return username

@app.route('/')
@auth.login_required
def index():
    return "Hello, {}!".format(auth.current_user())

if __name__ == '__main__':
    app.run()

运行应用程序

保存上述代码到一个文件(例如 app.py),然后在终端中运行:

python app.py

访问 http://127.0.0.1:5000/,你会看到一个认证对话框,输入用户名和密码(例如 johnhello)即可访问受保护的资源。

应用案例和最佳实践

多重认证方案

在某些情况下,应用程序可能需要支持多种认证方法。例如,一个 Web 应用程序可以通过基本认证发送客户端 ID 和密钥,而第三方 API 客户端则使用 JWT 令牌。Flask-HTTPAuth 提供了 MultiAuth 类,允许你使用多个认证对象保护一个路由。

以下是一个使用基本认证和令牌认证的示例:

from flask import Flask
from flask_httpauth import HTTPBasicAuth, HTTPTokenAuth, MultiAuth

app = Flask(__name__)
basic_auth = HTTPBasicAuth()
token_auth = HTTPTokenAuth(scheme='Bearer')
multi_auth = MultiAuth(basic_auth, token_auth)

users = {
    "john": "hello",
    "susan": "bye"
}

tokens = {
    "secret-token-1": "john",
    "secret-token-2": "susan"
}

@basic_auth.verify_password
def verify_password(username, password):
    if username in users and users[username] == password:
        return username

@token_auth.verify_token
def verify_token(token):
    if token in tokens:
        return tokens[token]

@app.route('/')
@multi_auth.login_required
def index():
    return "Hello, {}!".format(multi_auth.current_user())

if __name__ == '__main__':
    app.run()

用户角色

Flask-HTTPAuth 还包括一个简单的基于角色的认证系统,可以提供更细粒度的访问控制。以下是一个启用角色支持的示例:

from flask import Flask
from flask_httpauth import HTTPBasicAuth

app = Flask(__name__)
auth = HTTPBasicAuth()

users = {
    "john": ("hello", "admin"),
    "susan": ("bye", "user")
}

@auth.verify_password
def verify_password(username, password):
    if username in users and users[username][0] == password:
        return username

@auth.get_user_roles
def get_user_roles(user):
    return users[user][1]

@app.route('/admin')
@auth.login_required(role='admin')
def admin():

httpauthHTTP Authentication middlewares项目地址:https://gitcode.com/gh_mirrors/htt/httpauth

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

束辉煊Darian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值