Flask-Praetorian 项目教程

Flask-Praetorian 项目教程

flask-praetorianStrong, Simple, and Precise security for Flask APIs (using jwt)项目地址:https://gitcode.com/gh_mirrors/fl/flask-praetorian

1. 项目的目录结构及介绍

Flask-Praetorian 是一个用于 Flask 应用的安全扩展,提供了强大的 API 安全功能。以下是项目的目录结构及其介绍:

flask-praetorian/
├── docs/                # 文档目录
│   ├── _build/          # 构建的文档文件
│   ├── _static/         # 静态文件
│   ├── _templates/      # 模板文件
│   ├── conf.py          # Sphinx 配置文件
│   ├── index.rst        # 文档主页
│   └── ...              # 其他文档文件
├── examples/            # 示例代码目录
│   ├── minimal.py       # 最小示例
│   └── ...              # 其他示例
├── flask_praetorian/    # 核心代码目录
│   ├── __init__.py      # 初始化文件
│   ├── decorators.py    # 装饰器
│   ├── exceptions.py    # 异常处理
│   ├── tokens.py        # 令牌处理
│   └── ...              # 其他核心文件
├── tests/               # 测试目录
│   ├── __init__.py      # 初始化文件
│   ├── conftest.py      # 测试配置
│   └── ...              # 其他测试文件
├── .gitignore           # Git 忽略文件
├── LICENSE              # 许可证
├── README.md            # 项目说明
├── setup.py             # 安装脚本
└── ...                  # 其他项目文件

2. 项目的启动文件介绍

在 Flask-Praetorian 项目中,没有特定的“启动文件”,因为它是作为一个 Flask 扩展使用的。通常,你会在你的 Flask 应用中初始化并使用 Flask-Praetorian。以下是一个简单的示例:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_praetorian import Praetorian
from flask_cors import CORS

app = Flask(__name__)
app.config['SECRET_KEY'] = 'top-secret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'

db = SQLAlchemy(app)
guard = Praetorian(app, db)
cors = CORS(app)

# 定义用户模型
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String, unique=True)
    password = db.Column(db.String)
    roles = db.Column(db.String)
    is_active = db.Column(db.Boolean, default=True, server_default='true')

    @property
    def identity(self):
        return self.id

    @property
    def rolenames(self):
        try:
            return self.roles.split(',')
        except Exception:
            return []

    @property
    def password(self):
        return self.password

    @classmethod
    def lookup(cls, username):
        return cls.query.filter_by(username=username).one_or_none()

    @classmethod
    def identify(cls, id):
        return cls.query.get(id)

db.create_all()

# 添加用户
db.session.add(User(
    username='TheDusktreader',
    password=guard.hash_password('password'),
    roles='admin'
))
db.session.commit()

@app.route('/login', methods=['POST'])
def login():
    req = app.current_request
    username = req.json_body['username']
    password = req.json_body['password']
    user = guard.authenticate(username, password)
    ret = {'access_token': guard.encode_jwt_token(user)}
    return ret, 200

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

3. 项目的配置文件介绍

Flask-Praetorian 的配置通常在 Flask 应用的配置文件中进行。以下是一些常用的配置项:

app.config['SECRET_KEY'] = 'top-secret'  # 密钥
app.config['JWT_ACCESS_LIFESPAN'] =

flask-praetorianStrong, Simple, and Precise security for Flask APIs (using jwt)项目地址:https://gitcode.com/gh_mirrors/fl/flask-praetorian

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

娄卉旎Wylie

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

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

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

打赏作者

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

抵扣说明:

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

余额充值