Tokens
为确保一切正常,请通过可浏览的 API 端点创建第三个用户帐户。 我已经将我的用户称为 testuser2 。 然后点击“ POST”按钮。
下一个屏幕显示来自服务器的 HTTP 响应。 我们的用户注册 POST 成功,因此在顶部创建了状态代码 HTTP 201。 返回值密钥是此新用户的身份验证令牌。
如果您查看命令行控制台,那么 django-allauth 将自动生成一封电子邮件。 可以更新此默认文本,并添加具有 Django 初学者介绍的其他配置的电子邮件 SMTP 服务器。
Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [example.com] Please Confirm Your E-mail Address From: webmaster@localhost To: testuser2@email.com Date: Wed, 10 Oct 2019 19:29:24 -0000 Message-ID: <153626216499.84718.7765647716299907673@1.0.0.127.in-addr.arpa> Hello from example.com! You're receiving this e-mail because user testuser2 has given yours as an\ e-mail address to connect their account. To confirm this is correct, go to http://127.0.0.1:8000/api/v1/rest-auth/\ registration/account-confirm-email/MQ:1fxzy0:4y-f6DqQFZVNB_-PgBI4Iq_M4iM/ Thank you from example.com! example.com
在您的网络浏览器中,通过 http://127.0.0.1:8000/admin/ 切换到 Django admin。 您将需要使用您的超级用户帐户。
然后,单击页面顶部的令牌链接。
您将被重定向到位于以下位置的令牌页面:
http://127.0.0.1:8000/admin/authtoken/token/。
Django REST 框架已为 testuser2 用户生成了一个令牌。 通过 API 创建其他用户时,其令牌也将显示在此处。
逻辑上的问题是,为什么我们的超级用户帐户或测试用户没有令牌? 答案是我们在添加令牌认证之前创建了这些帐户。 但是不用担心,一旦我们通过 API 使用任一帐户登录,令牌就会自动添加并可用。
继续,让我们使用我们的新 testuser2 帐户登录。 打开 Web 浏览器,访问 http://127.0.0.1:8000/api/v1/rest-auth/login/。
输入我们的 testuser2 帐户的信息。 点击“ POST”按钮。
发生了两件事。 在右上角,我们的用户帐户 testuser2 可见,确认我们现在已登录。服务器还发送了带有令牌的 HTTP 响应。
在我们的前端框架中,我们需要在本地存储中或以 cookie 的形式在客户端上捕获并存储此令牌。 然后配置我们的应用程序,以便所有将来的请求都在标头中包含令牌,以作为认证用户的一种方式。
总结
首次使用 Web API 时,用户身份验证是最难掌握的领域之一。 没有整体结构的好处,作为开发人员,我们必须深入了解并适当配置我们的 HTTP 请求/响应周期。
Django REST Framework 对此过程提供了很多内置支持,包括内置 TokenAuthentication。 但是,开发人员必须自己配置其他区域,例如用户注册和专用的 url/ 视图。 因此,一种流行,强大且安全的方法是依靠第三方软件包 django-rest-auth 和 django-allauth 来最大程度地减少必须从头开始编写的代码量。