django rest framework令牌身份验证的无密码身份验证。

drfpasswordless的Python项目详细描述


ci image

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(可选,适用于移动设备)

安装

  1. 安装drfpasswordless

    pipenv install drfpasswordless
    
  2. 将django rest框架的令牌身份验证添加到django rest 框架项目。

  3. < > >
    REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':('rest_framework.authentication.TokenAuthentication',)}INSTALLED_APPS=[...'rest_framework','rest_framework.authtoken','drfpasswordless',...]

    然后运行

    python manage.py migrate
    
    1. 设置允许在您的 设置.py。可用的选项有emailmobile
    2. < > >
      PASSWORDLESS_AUTH={..'PASSWORDLESS_AUTH_TYPES':['EMAIL','MOBILE'],..}

      默认情况下,drfpasswordless查找名为emailmobile的字段 在用户模型上。如果提供的别名不属于任何给定用户, 将创建一个新用户。

      3A.如果您使用的是电子邮件,请参阅配置电子邮件部分 下面,

      3b.如果您使用的是mobile,请参阅配置电子邮件部分 下面,

      1. drfpasswordless.url添加到您的url.py
      2. < > >
        urlpatterns=[..path('',include('drfpasswordless.urls')),..]
        1. 现在可以投递到任一端点:
        2. < > >
          curl -X POST -d "email=aaron@email.com" localhost:8000/auth/email/
          
          // OR
          
          curl -X POST -d "mobile=+15552143912" localhost:8000/auth/mobile/
          

          将向联系人发送一个6位数的回拨令牌。

          1. 客户端有15分钟时间使用6位回调令牌 正确地。如果成功,他们将获得一个授权令牌 然后客户机可以使用django rest框架的 令牌身份验证方案。
          2. < > >
            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_sidtwilio_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

            待办事项

            • github.io项目页
            • 添加mkdocs-http://www.mkdocs.org/
            • 支持非美国手机号码
            • 自定义URL
            • 将错误设置更改为500

            鼓励拉取请求!

            捐赠和支持

            如果你觉得无字博士有用,考虑给我一个 在Twitter和 instagram上的@hi.aron

            如果你想更进一步,在你的创业公司中使用drfpasswordless 或者做生意,考虑捐款:

            • BTC:3fzsfekvabl5adh9egoxh77ghbtg2kctpk
            • ETH:0x13412a79f06a83b107a8833db209becbb700f24
            • 方形现金:$Aaron

            许可证

            麻省理工学院许可证(MIT)

            版权所有(c)2018 Aaron Ng

            兹免费准许任何人取得副本 本软件和相关文档文件("软件")的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

            上述版权公告及本许可公告须包括在 软件的副本或大部分。

            本软件按"原样"提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合某一特定目的和非侵犯性。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

            欢迎加入QQ群-->: 979659372 Python中文网_新手群

            推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务