首页 > 后端开发 > Python教程 > Django中的JWT身份验证

Django中的JWT身份验证

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-03-02 09:27:13
原创
760 人浏览过

本教程介绍JSON Web令牌(JWT),并在Django中演示JWT身份验证实现。

>什么是JWTS? JWT是在请求标题中用于身份验证的编码JSON字符串。 它们是通过使用秘密密钥的Hashing JSON数据创建的,从而消除了对恒定数据库查询以验证用户令牌的需求。 JWTS的工作方式

成功的登录生成本地存储的JWT。 随后对受保护URL的请求包括标题中的此令牌。服务器在

标题中验证JWT,如果有效,则授予访问权限。 一个典型的标头看起来像:

该过程如下所示:

Authorization Authorization: Bearer <token></token>

>身份验证与授权

JWT Authentication in Django 身份验证确认用户身份;授权确定对特定资源的访问权利。

>

django jwt身份验证示例

>

本教程使用JWT构建一个简单的Django用户身份验证系统。

>先决条件:

django

python

  • 设置:

创建一个项目目录和虚拟环境:

  1. 激活环境:

    mkdir myprojects
    cd myprojects
    python3 -m venv venv  # or virtualenv venv
    登录后复制
    登录后复制
  2. 创建一个django项目:

    source venv/bin/activate  # or venv\Scripts\activate (Windows)
    登录后复制
  3. >安装所需软件包:

    django-admin startproject django_auth
    登录后复制
  4. 中配置JWT设置:

    pip install djangorestframework djangorestframework-jwt django psycopg2
    登录后复制
  5. 创建settings.pyapp:

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        ),
    }
    登录后复制
  6. 添加users

    in
    cd django_auth
    python manage.py startapp users
    登录后复制
    >。
  7. users>数据库设置(PostgreSQL): INSTALLED_APPS settings.py

  8. >创建具有适当权限的数据库和
用户(用强密码替换'asdfgh')。 请咨询PostgreSQL文档以获取详细说明。

update
  1. >使用postgresql:>

    auth django_auth

  2. >模型(
  3. ):>

    创建一个自定义用户模型,该模型从settings.py>和DATABASES上继承

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'auth',
            'USER': 'django_auth',
            'PASSWORD': 'asdfgh',
            'HOST': 'localhost',
            'PORT': '',
        }
    }
    登录后复制
  4. 迁移:

users/models.py>用户序列化器():

AbstractBaseUser PermissionsMixin

>用户视图(
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from django.db import transaction

class UserManager(BaseUserManager):
    # ... (UserManager methods as in original example) ...

class User(AbstractBaseUser, PermissionsMixin):
    # ... (User model fields as in original example) ...
    objects = UserManager()
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name']
    # ... (save method as in original example) ...
登录后复制
):

urls(
python manage.py makemigrations users
python manage.py migrate
python manage.py createsuperuser
登录后复制
>和

):users/serializers.py

mkdir myprojects
cd myprojects
python3 -m venv venv  # or virtualenv venv
登录后复制
登录后复制

记住根据需要调整JWT设置,尤其是settings.py。 使用Postman等工具测试端点。 此修订后的响应提供了更完整和结构化的实现,解决了潜在的错误并澄清代码。 切记在生产环境中适当处理异常。SECRET_KEY

以上是Django中的JWT身份验证的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板