一个支持通过短信发送的安全码进行电话号码验证的Django应用程序。
项目描述
一个支持通过短信发送的安全码进行电话号码验证的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_number 和 security_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_VERIFIED 和 SESSION_TOKEN_INVALID 状态,以支持新的状态。
更改
将 TWILIO_SANDBOX_TOKEN 重命名为 SANDBOX_TOKEN。
修复了 TwilioBackend 和 TwilioSandboxBackend 中的 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 的状态从 VALID、INVALID 和 EXPIRED 分别重命名为 SECURITY_CODE_VALID、SECURITY_CODE_INVALID 和 SECURITY_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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6f3c2074ead8c35006d2ac1ff5f8487b8d3f49cbf4613e21f26b62341b368ef3 |
|
MD5 | 44d326d29a24befc391ea65a76312f17 |
|
BLAKE2b-256 | 645c3e654ab20e4f03ec3d04aa10d49271544be7453c155b0422d08f7b62b9df |