django rest framework令牌身份验证的无密码身份验证。
drfpasswordless的Python项目详细描述
drfpasswordless是将"passwordless"身份验证集成到 使用用户电子邮件地址或 仅限手机号码(此处称为别名)。
它是为使用drf自己的令牌身份验证系统而构建的,它发送 用户到给定电子邮件地址或移动设备的6位回调令牌 号码。用户正确地将其发回 身份验证令牌(同样,由django rest framework的 令牌身份验证系统)。
默认情况下,回调令牌在15分钟后过期。
示例用法:
curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/
发送电子邮件至aaron@email.com:
...
<h1>Your login token is 815381.</h1>
...
返回阶段
curl -X POST -d "token=815381" localhost:8000/callback/auth/ > HTTP/1.0 200 OK > {"token":"76be2d9ecfaf5fa4226d722bzdd8a4fff207ed0e"}
要求
- 蟒蛇(3.6+)
- Django(2.0+)
- django rest framework+authtoken(3.6+)
- python twilio(可选,适用于移动设备)
安装
安装drfpasswordless
pipenv install drfpasswordless
将django rest框架的令牌身份验证添加到django rest 框架项目。
< > >- 设置允许在您的
设置.py。可用的选项有
email
和mobile
< > > - 将
drfpasswordless.url
添加到您的url.py < > > - 现在可以投递到任一端点: < > >
- 客户端有15分钟时间使用6位回调令牌 正确地。如果成功,他们将获得一个授权令牌 然后客户机可以使用django rest框架的 令牌身份验证方案。 < > >
- github.io项目页
- 添加mkdocs-http://www.mkdocs.org/
- 支持非美国手机号码
- 自定义URL
- 将错误设置更改为500
- BTC:
3fzsfekvabl5adh9egoxh77ghbtg2kctpk
- ETH:
0x13412a79f06a83b107a8833db209becbb700f24
- 方形现金:
$Aaron
REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':('rest_framework.authentication.TokenAuthentication',)}INSTALLED_APPS=[...'rest_framework','rest_framework.authtoken','drfpasswordless',...]
然后运行
python manage.py migrate
PASSWORDLESS_AUTH={..'PASSWORDLESS_AUTH_TYPES':['EMAIL','MOBILE'],..}
默认情况下,drfpasswordless查找名为email
或mobile的字段
在用户模型上。如果提供的别名不属于任何给定用户,
将创建一个新用户。
3A.如果您使用的是电子邮件
,请参阅配置电子邮件部分
下面,
3b.如果您使用的是mobile
,请参阅配置电子邮件部分
下面,
urlpatterns=[..path('',include('drfpasswordless.urls')),..]
curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/ // OR curl -X POST -d "mobile=+15552143912" localhost:8000/auth/mobile/
将向联系人发送一个6位数的回拨令牌。
curl -X POST -d "token=815381" localhost:8000/callback/auth/ > HTTP/1.0 200 OK > {"token":"76be2d9ecfaf5fa4226d722bzdd8a4fff207ed0e"}
配置电子邮件
指定要从中发送回调令牌的电子邮件地址
使用无密码电子邮件地址设置。
您还需要设置一个SMTP服务器来发送电子邮件(请参阅django docs<;https://docs.djangoproject.com/en/1.10/topics/email/>;
),但是
开发您可以设置虚拟开发SMTP服务器来测试
电子邮件。发送的电子邮件将打印到控制台。请在此处阅读更多内容。<;https://docs.djangoproject.com/en/1.10/topics/email/配置用于开发的电子邮件>;
curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/
1
然后运行以下命令:
curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/
2
配置移动设备
您需要安装python twilio模块
curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/
3
并设置twilio_account_sid
和twilio_auth_令牌
环境
变量。
您还需要指定使用
无密码移动电话号码
设置。
模板
如果要使用自定义电子邮件模板进行电子邮件回拨 令牌,使用此设置指定模板名称:
curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/
4
模板呈现一个变量 正在发送的6位回调令牌。
接触点验证
当用户 使用发送到特定终结点的令牌登录。他们也可以 当用户更改联系人时自动将自己标记为无效 点:
默认情况下这是关闭的,但可以使用
无密码用户标记电子邮件已验证
或
已验证无密码用户标记移动
。默认情况下
启用后,他们会查找用户模型字段email\u verified
或
手机已验证
您也可以使用/validate/email/
或/validate/mobile/
来
自动将令牌发送到附加到当前
请求用户的电子邮件或手机(如果有的话)。
然后,您可以将该令牌发送到/callback/verify/
,后者将重复检查
端点属于request.user并将别名标记为已验证。
注册
所有未识别的电子邮件和手机号码都会通过
违约。新帐户自动设置为
设置不可用的密码()
但建议管理员使用
密码类型。
这可以通过无密码注册新用户关闭
设置:
其他设置
下面是可配置默认值的完整列表。
curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/
5
待办事项
鼓励拉取请求!
捐赠和支持
如果你觉得无字博士有用,考虑给我一个 在Twitter和 instagram上的@hi.aron。
如果你想更进一步,在你的创业公司中使用drfpasswordless 或者做生意,考虑捐款:
许可证
麻省理工学院许可证(MIT)
版权所有(c)2018 Aaron Ng
兹免费准许任何人取得副本 本软件和相关文档文件("软件")的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:
上述版权公告及本许可公告须包括在 软件的副本或大部分。
本软件按"原样"提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合某一特定目的和非侵犯性。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。