Django中的JWT身份验证

这篇教程详细介绍了如何在Django中实现JWT身份验证,包括JWT的工作原理、认证授权概念,以及创建用户、验证用户的具体步骤,最后展示了如何检索和更新用户信息。
摘要由CSDN通过智能技术生成

本教程将介绍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

让我们开始吧。

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

mkdir myprojects

cd myprojects

virtual venv

激活虚拟环境:

source venv/bin/activate

创建一个Django项目。

django-admin startproject django_auth

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

pip install djangorestframework
pip install djangorestframework-jwt
pip install django

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

配置JWT设置

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

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

REST_FRAMEWORK = {
  'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
  ),
}

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

cd django-auth
django-admin.py startapp users

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

设置数据库

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

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

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

sudo su postgres

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

psql
postgres=# CREATE DATABASE auth;

创建一个角色:

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

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


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值