跳转到主要内容

一个支持通过短信发送的安全码进行电话号码验证的Django应用程序。

项目描述

https://travis-ci.org/CuriousLearner/django-phone-verify.svg?branch=master https://coveralls.io/repos/github/CuriousLearner/django-phone-verify/badge.svg?branch=master License https://img.shields.io/badge/Made%20with-Python-1f425f.svg https://img.shields.io/badge/Maintained%3F-yes-green.svg https://badge.fury.io/py/django-phone-verify.svg https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square

一个支持通过短信发送的安全码进行电话号码验证的Django应用程序。

显著特性

  • 让开发者通过短信验证电话号码。

  • 可扩展以提供不同长度的令牌。

  • 已集成Twilio和Nexmo。

  • 为令牌设置过期时间。

  • 提供一个接口以轻松扩展,用于编写自定义短信发送后端。

  • 完全不影响现有的AUTH_USER_MODEL

  • 可用于多个潜在用例,而不仅仅是身份验证。

  • 提供用于发送短信和验证的端点(见api_endpoints.rst)。

安装

pip install django-phone-verify

配置

  • 将应用程序添加到INSTALLED_APPS

# In settings.py:

# Add app to `INSTALLED_APPS`
INSTALLED_APPS = [
    ...
    "phone_verify",
]
  • 根据需要添加Phone Verify的设置

# In settings.py
# Add settings for phone_verify to work
PHONE_VERIFICATION = {
    "BACKEND": "phone_verify.backends.twilio.TwilioBackend",
    "OPTIONS": {
        "SID": "fake",
        "SECRET": "fake",
        "FROM": "+14755292729",
        "SANDBOX_TOKEN": "123456",
    },
    "TOKEN_LENGTH": 6,
    "MESSAGE": "Welcome to {app}! Please use security code {security_code} to proceed.",
    "APP_NAME": "Phone Verify",
    "SECURITY_CODE_EXPIRATION_TIME": 3600,  # In seconds only
    "VERIFY_SECURITY_CODE_ONLY_ONCE": False,  # If False, then a security code can be used multiple times for verification
}

使用方法

  • 要了解更多关于如何使用、集成和利用Django Phone Verify现有功能的信息,请参阅usage.rst

注意:除了 Twilio 之外,Django Phone Verify 还提供了 Nexmo 作为后端服务。要将后端服务切换到 Nexmo,请将您的 PHONE_VERIFICATION 设置中的 BACKEND 替换为 phone_verify.backends.nexmo.NexmoBackend,并在 PHONE_VERIFICATION 设置的 OPTIONS 中定义 KEY,用您的 Nexmo API 密钥替换现有的 SID

兼容性

  • Python 3.6+

  • Django 2.1+

  • Django REST Framework 3.9+

贡献

没有代码是无错误的,我相信这个应用程序也会有错误。如果您发现任何错误,请创建一个 GitHub 上的问题。

许可证

GPLv3

发布说明

[3.0.0]

新增

  • 支持 Django 4.x。

  • 支持 Django 3.2。

更改

  • 方法 phone_verify.backends.nexmo.NexmoBackend.send_sms 将参数名称从 numbers 更改为 number,以与继承的其他类保持一致。

[2.0.1]

新增

  • 支持 Python 3.8 & Python 3.9。

  • CI 测试 Py{36,37,38,39}-Django{20,21,22,30,31}。

更改

  • 修复了 generate_session_token 问题,以处理 Py38、Py39 中当 session_token 已经是 string 而不是 bytes 的情况。

[2.0.0]

注意:此库的先前版本在 JWT session_token 中提供了 security_code。您必须在本版本中重新验证 phone_numbers,以确保它们是经过验证的。

新增

  • 添加了测试,以提供对包的 100% 覆盖率。

  • nexmo.errors.ClientError 作为异常类添加到 phone_verify.backends.nexmo.NexmoBackend & phone_verify.backends.nexmo.NexmoSandboxBackend

更改

  • 修改了 phone_verify.backends.BaseBackend.generate_session_token 的方法签名。现在它只接受 phone_number,而不是 phone_numbersecurity_code 的组合。

  • 从 JWT session_token 中删除 security_code,以避免信息泄露。

  • session_token 中添加 nonce,为每个 phone_number 生成唯一的令牌。

  • 修复了对 phone_verify.backends.nexmo.NexmoBackend.send_sms 方法的调用。

[1.1.0]

新增

  • 支持 Nexmo 作为后端服务,同时支持 Twilio

  • 添加编写自定义后端的文档。

更改

  • 更新 backends.base.BaseBackend.validate_security_code,以使用 save() 而不是 update(),以允许 Django 发射其 post_save() 信号。

[1.0.0]

新增

  • 通过 coveralls 添加覆盖率报告。

  • 通过将 VERIFY_SECURITY_CODE_ONLY_ONCE 设置为 True,支持使用一次性密码 (OTP)。

  • 添加脚本来支持开发中的 makemigrations。

  • BaseBackend 状态现在有 SECURITY_CODE_VERIFIEDSESSION_TOKEN_INVALID 状态,以支持新的状态。

更改

  • TWILIO_SANDBOX_TOKEN 重命名为 SANDBOX_TOKEN

  • 修复了 TwilioBackendTwilioSandboxBackend 中的 send_bulk_sms 方法的签名。

  • 对于 /api/phone/register 的响应中包含的键是 session_token,而不是 session_code

  • 对于 /api/phone/verify 的请求负载现在期望的是 session_token 键,而不是 session_code

  • 对于 /api/phone/verify 的响应现在在将 VERIFY_SECURITY_CODE_ONLY_ONCE 设置为 True 的情况下,发送额外的响应 Security code is already verified

  • 在代码和文档中将 otp 重命名为 security_code,以保持一致性。

  • BaseBackend 的状态从 VALIDINVALIDEXPIRED 分别重命名为 SECURITY_CODE_VALIDSECURITY_CODE_INVALIDSECURITY_CODE_EXPIRED

  • session_code 重命名为 session_token,以在整个应用程序中保持代码和命名的统一。

  • 将服务 send_otp_and_generate_session_code 重命名为 send_security_code_and_generate_session_token

  • 将方法 BaseBackend.generate_token 重命名为 BaseBackend.generate_security_code

  • 将方法 create_otp_and_session_token 重命名为 create_security_code_and_session_token

  • 将方法 BaseBackend.validate_token 重命名为 BaseBackend.validate_security_code,并添加了一个额外的参数 session_token

[0.2.0]

新增

  • pre-commit-config 用于使用 black 和其他有用工具维护代码质量。

  • 有关集成和使用的文档 usage.rst

  • 使用 py{37}-django{20,21,22} 进行 Tox 测试。

  • 使用 Travis CI 进行构建测试。

更改

  • *.md 文档转换为 reST 标记。

  • 修复通过 install_requires 安装所需包依赖项的问题。

[0.1.1]

新增

  • API 端点的 README 和文档。

  • 使用 setup.cfg 管理覆盖率。

  • 包含后端、要求、测试的 phone_verify 应用。

  • 应用程序的初始设置。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分布

django-phone-verify-3.0.0.tar.gz (31.1 kB 查看哈希)

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面