Skip to main content

通用模块

Project description

fly-common

一个轻量级的 Python 公共工具库,专注于安全认证和常用工具函数

📖 介绍

fly-common 是一个功能精简但实用的 Python 公共库,主要提供以下核心功能:

  • JWT Token 管理:支持对称加密(HS256)和非对称加密(RS256)的 JWT Token 生成、验证和刷新
  • 密码加密:提供 MD5、PBKDF2 等多种加密方式
  • 工具函数:提供单例模式、随机字符串生成等实用工具

✨ 功能特性

安全模块 (safety)

JWT Token

  • 支持对称加密(HS256)和非对称加密(RS256)
  • 提供 Access Token 和 Refresh Token 的生成
  • Token 验证与刷新机制
  • 支持自定义过期时间、签发者(issuer)和受众(audience)
  • 单例模式实现,确保全局唯一实例

密码加密

  • MD5 加密
  • PBKDF2 加密(推荐用于密码存储)
  • 密码验证功能
  • 随机字符串生成
  • 数字验证码生成

工具模块 (tools)

  • 线程安全的单例模式装饰器

📦 安装

环境要求

  • Python >= 3.9

安装依赖

pip install -r requirements.txt

🚀 使用说明

JWT Token 使用示例

对称加密(HS256)

from fly_common.safety.jwt_token import JWTSymmetry

# 初始化(单例模式)
jwt_sym = JWTSymmetry(
    secret_key="your-secret-key",
    access_token_expire_seconds=86400,  # 24小时
    refresh_token_expire_seconds=604800,  # 7天
    issuer="your-app",
    audience="your-users"
)

# 生成 Token
result = jwt_sym.create_at_rf_token(payload={"sub": "user123"})
if result.ok:
    access_token = result.data["access_token"]
    refresh_token = result.data["refresh_token"]

# 验证 Token
verify_result = jwt_sym.verify_token(access_token)
if verify_result.ok:
    print("Token 有效:", verify_result.data)

# 刷新 Token
refresh_result = jwt_sym.refresh_token(access_token, refresh_token)
if refresh_result.ok:
    new_tokens = refresh_result.data

非对称加密(RS256)

from fly_common.safety.jwt_token import JWTAsymmetry

# 初始化(单例模式)
jwt_asym = JWTAsymmetry(
    private_key="your-private-key",
    public_key="your-public-key",
    algorithm="RS256"
)

# 使用方式与对称加密相同
result = jwt_asym.create_at_rf_token(payload={"sub": "user123"})

密码加密使用示例

from fly_common.safety.md5 import md5, en_password, check_password, code_number

# MD5 加密
hashed = md5("your-string")

# 密码加密(PBKDF2)
password_hash = en_password("user-password")

# 验证密码
is_valid = check_password("user-password", password_hash)

# 生成验证码
code = code_number(6)  # 生成6位数字验证码

单例模式使用示例

from fly_common.tools.single import Singleton

@Singleton
class MyService:
    def __init__(self):
        self.data = []

# 获取实例
service1 = MyService()
service2 = MyService()

# service1 和 service2 是同一个实例
assert service1 is service2

📁 项目结构

fly-common/
├── safety/           # 安全模块
│   ├── jwt_token.py  # JWT Token 管理
│   └── md5.py        # 密码加密工具
├── tools/            # 工具模块
│   └── single.py     # 单例模式
└── __init__.py

🤝 参与贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 新建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

📄 许可证

本项目采用 MIT 许可证

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fly_common-0.1.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fly_common-0.1.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file fly_common-0.1.0.tar.gz.

File metadata

  • Download URL: fly_common-0.1.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.24

File hashes

Hashes for fly_common-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5044837af91d30d3814be1d83e1135ed47156e363d03ba8f0a7acd9579736a8c
MD5 03f30b17ee3785d4e38fa7002914ce84
BLAKE2b-256 a686bc3b2a1852ee7b5b0a85fb8f98cd22ffbcc33f913eb948b00193cd1d276f

See more details on using hashes here.

File details

Details for the file fly_common-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fly_common-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.24

File hashes

Hashes for fly_common-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f73ef80329bd6504fd565f5105ed04c93d03d340e91f8f182dd3e1987297b3f
MD5 52909838b86e6b0fa1352ae7bdcf455b
BLAKE2b-256 c63454d6d0cb867e0f918bd8c5a2377eaf5b7ac8e7f0035ec1fdb876d2ab5b75

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page