当前位置:   article > 正文

Django中的JWT身份验证

django jwt 用户身份证验证

本教程将介绍JSON Web令牌(JWT)以及如何在Django中实现JWT身份验证。

什么是JWT?

JWT是一个编码的JSON字符串,该字符串在标头中传递以验证请求。 通常是通过使用密钥对JSON数据进行散列来获得的。 这意味着服务器不需要每次都查询数据库来检索与给定令牌关联的用户。

JSON Web令牌如何工作

当用户使用其凭据成功登录时,将获取JSON Web令牌并将其保存在本地存储中。 每当用户想要访问受保护的URL时,都会在请求的标头中发送令牌。 然后,服务器在Authorization标头中检查有效的JWT,如果找到该JWT,将允许该用户访问。

典型的内容标头如下所示:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsI

下图显示了此过程:

JSON Web令牌如何工作

认证和授权的概念

身份验证是标识已登录用户的过程,而授权是标识特定用户是否有权访问Web资源的过程。

API范例

在本教程中,我们将使用JWT作为身份验证机制在Django中构建一个简单的用户身份验证系统。

要求

  • Django的
  • Python

让我们开始吧。

创建一个目录,您将在其中保留您的项目,并在其中创建一个虚拟环境来安装项目依赖项。

  1. mkdir myprojects
  2. cd myprojects
  3. virtual venv

激活虚拟环境:

source venv/bin/activate

创建一个Django项目。

django-admin startproject django_auth

使用pip安装DRF和django-rest-framework-jwt。

  1. pip install djangorestframework
  2. pip install djangorestframework-jwt
  3. pip install django

让我们继续并将DRF添加到settings.py文件中已安装应用程序的列表中。

配置JWT设置

为了使用JWT,我们需要配置django-rest-framework权限以接受JSON Web令牌。

settings.py文件中,添加以下配置:

  1. REST_FRAMEWORK = {
  2. 'DEFAULT_AUTHENTICATION_CLASSES': (
  3. 'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
  4. ),
  5. }

创建一个名为“用户”的新应用,该应用将处理用户身份验证和管理。

  1. cd django-auth
  2. django-admin.py startapp users

将用户应用程序添加到settings.py文件中已安装应用程序的列表中。

设置数据库

我们将使用PostgreSQL数据库,因为它更加稳定和强大。

创建auth数据库并分配用户。

通过输入以下命令切换到计算机上的Postgres帐户:

sudo su postgres

访问Postgres提示并创建数据库:

  1. psql
  2. postgres=# CREATE DATABASE auth;

创建一个角色:

postgres=# CREATE ROLE django_auth WITH LOGIN PASSWORD 'asdfgh';

向用户授予数据库访问权限:


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/893766
推荐阅读
相关标签
  

闽ICP备14008679号