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

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

实现 token 认证

现在,我们需要更新身份验证系统以使用令牌。 第一步是更新我们的 DEFAULT_AUTHENTICATION_CLASSES 设置以使用 TokenAuthentication ,如下所示:

# blog_project/settings.py
REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated', 
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [ 
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication', # new
    ], 
}


我们保留 SessionAuthentication,因为我们的 Browsable API 仍需要它,但现在使用令牌在 HTTP 标头中来回传递身份验证凭据。


我们还需要添加 authtoken 应用,该应用会在服务器上生成令牌。 它包含在 Django REST Framework 中,但必须添加到我们的 INSTALLED_ APPS 设置中:

# blog_project/settings.py
INSTALLED_APPS = [ 
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # 3rd-party apps
    'rest_framework',
    'rest_framework.authtoken', # new

    # Local
    'posts.apps.PostsConfig', 
]


由于我们对 INSTALLED_APPS 进行了更改,因此我们需要同步数据库。 使用 Control + c 停止服务器。 然后运行以下命令。

(blogapi) $ python manage.py migrate


现在再次启动服务器。

(blogapi) $ python manage.py runserver


如果您访问 http://127.0.0.1:8000/admin/ 上的 Django admin,则会看到顶部现在有一个 Tokens 部分。 确保您使用超级用户帐户登录才能访问。


image


单击令牌链接以转到令牌页面,网址为:http://127.0.0.1:8000/admin/authtoken/token/


image


当前没有令牌可能令人惊讶。 毕竟我们有现有用户。 但是,仅在有用于用户登录的 API 调用之后才生成令牌。我们尚未这样做,因此尚无令牌。 我们将很快!

终端

我们还需要创建端点,以便用户可以登录和注销。 为此,我们可以创建一个专用的用户应用程序,然后添加我们自己的网址,视图和序列化程序。 但是,用户身份验证是我们真正不想犯错误的领域。 并且由于几乎所有的 API 都需要此功能,因此可以使用一些优秀且经过测试的第三方程序包是有道理的。


值得注意的是,我们将结合使用 django-rest-authdjango-allauth 来简化操作。 对于使用第三方软件包,请不要感到难过。 它们存在是有原因的,甚至最好的 Django 专业人士始终都依赖它们。 不必重新设计轮子!

相关文章
|
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中的句柄属性,便于直接获取控件或窗体句柄,以及不推荐...
1054 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】实现全屏显示功能
相关产品
云迁移中心
推荐文章
更多