Django API 开发:实现用户登录与注册(下)

简介: 现在,我们需要更新身份验证系统以使用令牌。 第一步是更新我们的 DEFAULT_AUTHENTICATION_CLASSES 设置以使用 TokenAuthentication
+关注继续查看

Tokens

为确保一切正常,请通过可浏览的 API 端点创建第三个用户帐户。 我已经将我的用户称为 testuser2 。 然后点击“ POST”按钮。

image


下一个屏幕显示来自服务器的 HTTP 响应。 我们的用户注册 POST 成功,因此在顶部创建了状态代码 HTTP 201。 返回值密钥是此新用户的身份验证令牌。


image


如果您查看命令行控制台,那么 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。 您将需要使用您的超级用户帐户。


然后,单击页面顶部的令牌链接。


image


您将被重定向到位于以下位置的令牌页面:


http://127.0.0.1:8000/admin/authtoken/token/


image


Django REST 框架已为 testuser2 用户生成了一个令牌。 通过 API 创建其他用户时,其令牌也将显示在此处。


逻辑上的问题是,为什么我们的超级用户帐户或测试用户没有令牌? 答案是我们在添加令牌认证之前创建了这些帐户。 但是不用担心,一旦我们通过 API 使用任一帐户登录,令牌就会自动添加并可用。


继续,让我们使用我们的新 testuser2 帐户登录。 打开 Web 浏览器,访问 http://127.0.0.1:8000/api/v1/rest-auth/login/


输入我们的 testuser2 帐户的信息。 点击“ POST”按钮。


image


发生了两件事。 在右上角,我们的用户帐户 testuser2 可见,确认我们现在已登录。服务器还发送了带有令牌的 HTTP 响应。


image


在我们的前端框架中,我们需要在本地存储中或以 cookie 的形式在客户端上捕获并存储此令牌。 然后配置我们的应用程序,以便所有将来的请求都在标头中包含令牌,以作为认证用户的一种方式。

总结

首次使用 Web API 时,用户身份验证是最难掌握的领域之一。 没有整体结构的好处,作为开发人员,我们必须深入了解并适当配置我们的 HTTP 请求/响应周期。


Django REST Framework 对此过程提供了很多内置支持,包括内置 TokenAuthentication。 但是,开发人员必须自己配置其他区域,例如用户注册和专用的 url/ 视图。 因此,一种流行,强大且安全的方法是依靠第三方软件包 django-rest-auth 和 django-allauth 来最大程度地减少必须从头开始编写的代码量。

相关文章
|
11月前
|
XML JSON 前端开发
软件测试|Spring Boot 的 RESTful API 设计与实现
软件测试|Spring Boot 的 RESTful API 设计与实现
103 0
软件测试|Spring Boot 的 RESTful API 设计与实现
|
11月前
|
SQL 安全 Java
微服务API开放授权平台的设计与实现
微服务API开放授权平台的设计与实现
微服务API开放授权平台的设计与实现
|
12月前
|
人工智能 数据可视化 API
【超简单API实现分割】PaddleSeg 分割之API
【超简单API实现分割】PaddleSeg 分割之API
253 0
【超简单API实现分割】PaddleSeg 分割之API
|
12月前
|
API
vb纯api实现ping主机(仅仅返回是否ping通)
vb纯api实现ping主机(仅仅返回是否ping通)
108 0
|
12月前
|
前端开发 JavaScript API
借助 Web Animations API 实现一个鼠标跟随偏移动画
借助 Web Animations API 实现一个鼠标跟随偏移动画
167 0
借助 Web Animations API 实现一个鼠标跟随偏移动画
|
12月前
|
SQL Java 数据库连接
Apache-DBUtils实现CRUD操作,已封装的API实现jdbc对数据库进行操作
Apache-DBUtils实现CRUD操作,已封装的API实现jdbc对数据库进行操作
135 0
Apache-DBUtils实现CRUD操作,已封装的API实现jdbc对数据库进行操作
|
SQL API 数据库
easyswoole快速实现一个网站的api接口程序
easyswoole快速实现一个网站的api接口程序
77 0
easyswoole快速实现一个网站的api接口程序
|
API C# Windows
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
本篇主要介绍一些与窗口句柄相关的一些API,比如设置窗口状态、当前激活的窗口、窗口客户区的大小、鼠标位置、禁用控件等,以及介绍Winform中的句柄属性,便于直接获取控件或窗体句柄,以及不推荐...
1053 0
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
|
存储 移动开发 前端开发
【前端】【H5 API】实现文件读取操作
【前端】【H5 API】实现文件读取操作
186 0
【前端】【H5 API】实现文件读取操作
|
Web App开发 移动开发 前端开发
【前端】【H5 API】实现全屏显示功能
【前端】【H5 API】实现全屏显示功能
162 0
【前端】【H5 API】实现全屏显示功能
相关产品
云迁移中心
推荐文章
更多