首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Django Rest框架中处理JWT身份验证和软删除用户

,可以通过以下步骤实现:

  1. JWT身份验证: JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。在Django Rest框架中,可以使用第三方库djangorestframework-jwt来处理JWT身份验证。

首先,安装djangorestframework-jwt库:

代码语言:txt
复制
pip install djangorestframework-jwt

然后,在Django的设置文件中进行配置:

代码语言:txt
复制
# settings.py

INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework_jwt',
    ...
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        ...
    ],
    ...
}

JWT_AUTH = {
    'JWT_SECRET_KEY': 'your-secret-key',  # 设置JWT的密钥
    'JWT_ALGORITHM': 'HS256',
    'JWT_ALLOW_REFRESH': True,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7),  # 设置JWT的过期时间
    ...
}

接下来,在视图中使用JWT进行身份验证:

代码语言:txt
复制
from rest_framework_jwt.views import obtain_jwt_token

urlpatterns = [
    ...
    path('api-token-auth/', obtain_jwt_token),  # 获取JWT Token的API
    ...
]

当用户登录时,可以通过向/api-token-auth/发送POST请求,提供正确的用户名和密码来获取JWT Token。然后,将该Token包含在每个后续请求的Authorization头中,以进行身份验证。

  1. 软删除用户: 软删除是指在数据库中标记用户为已删除,而不是直接从数据库中删除用户记录。这样做的好处是可以保留用户的历史记录,并且可以轻松地恢复或永久删除用户。

在Django中,可以通过添加一个is_deleted字段来实现软删除。首先,在用户模型中添加该字段:

代码语言:txt
复制
from django.db import models

class User(models.Model):
    ...
    is_deleted = models.BooleanField(default=False)
    ...

然后,在用户删除时,将is_deleted字段设置为True

代码语言:txt
复制
user.is_deleted = True
user.save()

在查询用户时,可以使用过滤器来排除已删除的用户:

代码语言:txt
复制
users = User.objects.filter(is_deleted=False)

这样,已删除的用户将不会出现在查询结果中。

以上是在Django Rest框架中处理JWT身份验证和软删除用户的方法。对于更详细的信息和更多功能,可以参考腾讯云的相关产品文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

说说web应用程序用户认证

那么问题来了,使用 Django Rest Framework 框架实现后端 REST API 时,如何做好用户认证呢?... Django Rest Framework ,认证功能是可插拨的,非常方便。REST框架提供了现成的身份验证方案,如下。并且还允许您实现自定义方案。...3、SessionAuthentication 此身份验证方案使用 Django 的默认会话后端进行身份验证。会话身份验证适用于与您的网站相同的会话上下文中运行的 AJAX 客户端。...其实不然,这里我推荐使用: JSON Web Token,也就是 django-rest-framework-jwt 安全加密功夫做得比较足,而且工作原理也清楚明了,使用也简单。...前端每次请求时将 JWT 放入 HTTP Header 的 Authorization 位。(解决XSS XSRF 问题) 后端检查是否存在,如存在,则验证 JWT 的有效性。

2.2K20

Django(72)Django认证系统库–djoser「建议收藏」

作用:Django认证系统的REST实现。djoser库提供了一组Django Rest Framework视图,用于处理注册、登录、注销、密码重置帐户激活等基本操作。它适用于自定义用户模型。...支持的身份验证后端 基于drf的身份认证Token 基于django-rest-framework-simplejwt的JWT认证 可用端点 /users/ /users/me/ /users...将djoser集成到后端应用程序之前,我们有必要去了解下 接下来我们会模拟最简单的流程:注册用户、登录注销。...用户登录 我们访问用户登录接口,就可以返回一个token 登录后查询用户信息 然后我们headers添加Authorization,对应的值为Token 刚刚返回的token值,注意中间要有一个空格...使用方式 INSTALLED_APPS 添加rest_framework.authtoken INSTALLED_APPS = [ 'django.contrib.auth', (.

1.9K20
  • django-rest-framework配置json web token进行接口的认证

    使用django-rest-framework开发api并使用json web token进行身份验证 在这里使用django-rest-framework-jwt这个库来帮助我们简单的使用jwt进行身份验证...并解决一些前后端分离而产生的跨域问题 流程 安装 安装django-rest-framework 现在接口一般都是restful风格,所以我们直接使用这个框架 终端输入以下命令安装 pip install...到Django REST框架DEFAULT_AUTHENTICATION_CLASSES # django-rest-framework设置 REST_FRAMEWORK = { 'PAGE_SIZE...jQuery封装的ajax来操作getpost) 使用post方法获取token并存入html的localStorage INSTALLED_APPS = [ ......所以开发阶段,我们先应不让jwt拦截所有请求,这样对我们测试产生诸多不变 注: 上述环境ubuntu16.04 lts django1.9搭建测试成功 上述文字皆为个人看法,如有错误或建议请及时联系我

    1.3K10

    六种Web身份验证方法比较Flask示例代码

    它不要求用户每个请求中提供用户名或密码。相反,登录后,服务器将验证凭据。如果有效,它将生成一个会话,将其存储会话存储,然后将会话 ID 发送回浏览器。...许多框架(如Django)开箱即用地提供了此功能。 缺点 它是有状态的。服务器跟踪服务器端的每个会话。用于存储用户会话信息的会话存储需要在多个服务之间共享才能启用身份验证。...如何使用 Flask 登录为您的应用程序添加身份验证 基于会话的身份验证,带 Flask,适用于单页应用 烧瓶的CSRF保护 Django 登录注销教程 Django 基于会话的单页应用身份验证...包 烧瓶-JWT-扩展 Flask-HTTPAuth Simple JWT for Django REST Framework FastAPI JWT Auth 代码 Flask-JWT扩展包为处理JWT...": app.run() 资源 JSON 网络令牌简介 IETF: JSON Web Token (JWT) 如何将 JWT 身份验证Django REST 框架结合使用 使用基于 JWT

    7.4K40

    Django+Vue开发生鲜电商平台之7.用户登录注册功能

    身份验证始终视图的最开始处,进行权限限制检查之前以及允许任何其他代码进行之前运行。...身份验证方案始终定义为类列表,DRF框架尝试对列表的每个类进行身份验证,并使用成功进行身份验证的第一个类的返回值设置request.userrequest.auth。...: BasicAuthentication机制使用HTTP基本身份验证,该身份针对用户用户密码进行了签名,实际开发中一般仅适用于测试; TokenAuthentication身份验证方案使用基于令牌的简单...原理 JSON Web Token (简称JWT),是目前最流行的跨域身份验证解决方案,使用基于Token的身份验证方法,服务端不需要存储用户的登录记录。...可以看到,登录之前,statenametoken均为空,登录之后即变为当前用户用户JWT

    4.4K20

    Django REST framework+Vue 打造生鲜超市(六) 七、用户登录与手机注册

    token值会保存到数据,跟这个用户相关联 ?  (4)客户端身份验证 对于客户端进行身份验证,令牌密钥应包含在 Authorization HTTP header 。...例如: WWW-Authenticate: Token  要想获取request.userrequest.auth还要在settings添加 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES...7.2.json web token方式完成用户认证 使用方法:http://getblimp.github.io/django-rest-framework-jwt/ (1)安装 pip install...jwt接口它默认采用的是用户密码登录验证,如果用手机登录的话,就会验证失败,所以我们需要自定义一个用户验证  自定义用户认证  (1)settings配置 AUTHENTICATION_BACKENDS...用户注册需要填写手机号,验证码密码,相当于create model操作,所以继承CreateModelMixin (1)修改UserProfilemobile字段 mobile = models.CharField

    6K80

    构建强大的API-DjangoREST框架探究与实践

    数据验证与错误处理API开发,数据验证错误处理是至关重要的部分。Django REST框架提供了强大的数据验证机制错误处理功能,让我们能够轻松地处理各种情况。...来实现基于JWT身份验证。...文件上传与存储许多应用程序,文件上传存储是常见的需求。Django REST框架提供了简单而强大的文件上传存储功能,使我们能够轻松地处理文件上传管理。...身份验证与授权开发API时,确保只有授权用户能够访问受保护的资源是非常重要的。Django REST框架提供了丰富的身份验证授权功能,可以帮助我们实现灵活的身份验证授权策略。...错误处理API开发处理错误是非常重要的,它可以帮助我们及时发现问题并向用户提供友好的错误信息。Django REST框架提供了丰富的错误处理功能,包括内置的异常类、自定义异常处理器等。

    39420

    七、用户登录与手机注册

    插件搜索HttpRequester [0] (4)客户端身份验证 对于客户端进行身份验证,令牌密钥应包含在 Authorization HTTP header 。...7.2.json web token(JWT)方式完成用户认证 (0) 引入 官方文档:https://getblimp.github.io/django-rest-framework-jwt/ JWT...是一个开放标准 组成 header(base64) payload(用户信息)(base64) Signature签名 JWT应用方面 传递非敏感信息 设计用户认证授权系统 web应用单点登录(SSO...HttpRequester [0bs10zgmrh.png] 7.3.vuejwt接口调试. vue登录接口是login //登录 export const login = params => {...path('login/', obtain_jwt_token ) ] 现在就可以登录了  jwt接口它默认采用的是用户密码登录验证,如果用手机登录的话,就会验证失败,所以我们需要自定义一个用户验证

    3.6K10

    Django+Vue开发生鲜电商平台之8.商品详情页功能实现

    三、用户收藏功能实现 1.用户收藏接口实现 用户收藏属于用户操作,所以apps/user_operation实现。...可以看到,当已经存在收藏时再重复添加,就会返回non_field_errors错误,是两个及以上字段联合验证失败时返回错误信息的关键字段,前端接收后可以进行相应处理。...权限检查始终视图的开始处运行,然后再允许执行其他任何代码,通常会使用request.userrequest.auth属性身份验证信息来确定是否应允许传入请求。...权限用于授予或拒绝不同类别的用户对API不同部分的访问,最简单的许可方式是允许访问任何经过身份验证用户,并拒绝访问任何未经身份验证用户。...可以看到,先在DRF后台增加收藏,然后Postman模拟访问获取到JWT后再删除,显然,只能删除用户自己的收藏,而不能删除其他用户的收藏。

    1.1K20

    Django REST Framework-认证

    Django REST Framework(DRF)提供了各种身份验证选项,以确保您的API端点仅对授权用户可用。...该机制,客户端向服务器发送用户密码,服务器使用这些凭据创建会话并将会话ID返回给客户端。客户端之后使用此会话ID向服务器发送请求。...该机制,客户端向服务器发送JWT,服务器使用该令牌验证客户端身份。DRF提供了一个内置的JSONWebTokenAuthentication类,用于实现基于JWT身份验证。...该机制,客户端向服务器发送用户密码,服务器使用这些凭据验证客户端身份。DRF提供了一个内置的BasicAuthentication类,用于实现基于Basic的身份验证。...get()方法,我们可以通过request.userrequest.auth属性来获取当前用户令牌实例。

    1.1K20

    JWT原理构成与使用(带案例简单易懂)

    JWT原理构成与使用 项目架构 开发模式:前后端分离 前端框架:VUE 后端框架Django REST framework 功能部分:管理员登录,数据统计,用户管理,商品管理,订单管理,权限管理...如果可以,请使用https协议 Django REST framework JWT 我们验证完用户的身份后(校验用户密码),需要向用户签发JWT需要用到用户身份信息的时候,还需要校验用户JWT...关于签发和校验JWT,我们可以使用Django REST framework JWT扩展来完成。...后端实现 Django REST framework JWT提供了登录签发JWT的视图,可以直接使用 from django.conf.urls import url from rest_framework_jwt.views...token,我们还需返回值增加usernameuser_id。

    87220

    (项目)生鲜超市(六)

    drf返回的token值会保存到数据库并与用户进行关联: ?   然后客户端需要进行身份验证,令牌密钥包含在 Authorization HTTP header 。...方式完成用户认证(JWT)   虚拟环境pip install djangorestframework-jwt   将settingsREST_FRAMEWORK的TokenAuthentication...3、VueJWT接口调试   vue登录接口是login: 1 //登录 2 export const login = params => { 3 return axios.post(`${host...jwt接口默认采用的是用户密码登录验证,如果用手机登录的话,就会验证失败,所以我们需要自定义一个用户验证,users/view.py编写: 1 from django.shortcuts import...'JWT_AUTH_HEADER_PREFIX': 'JWT', # JWT跟前端保持一致,比如“token”这里设置成JWT } 4、云片网发送短信验证码   云片网进行注册,完善开发者信息,然后新增签名模板

    1.8K20

    学习版pytest内核测试平台开发万字长文入门篇

    本文开发内容 登录,登出 首页,修改密码,个人信息 后台管理,用户管理 JWT认证 本文先打个基础,既是测试平台基本结构,也可以作为CMS基础框架,定制开发各种小型项目。...登录没有做用户密码校验,新增用户时才会做校验。 创建登录界面时,从localStorage移除userInfotoken,登录信息保留7天: ?...JWT_AUTH是jwt的配置项,定义了过期时间为30天,允许刷新,刷新间隔,响应处理,header前缀。最后补充了django-cors-headers的3个配置。...除了类视图,Django也提供了函数视图,并且Django REST framework提供了函数视图的方法装饰器,可以像flask框架一样,感受写纯后端接口的体验,按这个方法来写修改密码接口: ?...后端代码完全是我自己写的,先学了一遍DjangoDjango REST framework官方教程,其中《Django认证系统并不鸡肋反而很重要》这篇文章腾讯云+社区2020年度征文活动,被评选为了最受喜爱作者奖

    4.9K30

    如何在Django中集成JWT

    JWT简介 JWT(JSON Web Token)是一种流行的跨域认证解决方案。它可以令牌安全地传输用户身份信息,实现无状态认证机制。...优点: 跨域认证,适用于分布式微服务 减少数据库查询,优化性能 更好的托管扩展性 结构: header.payload.signature header 描述签名算法等元数据 payload 包含自定义用户数据...通过这种方式,JWT可以将用户信息安全地客户端和服务端传递。 Django中使用JWT JWTDjango有多种第三方包可以实现,我这里选择使用比较常用的simplejwt. 1....配置 settings.py添加以下内容: INSTALLED_APPS = [ # ......至此,我们了解了如何在Django REST框架中集成JWT认证,实现基于token的API接口访问控制。JWT可以提供更强大的用户认证方案。

    9310

    Python构建RESTful API指南

    选择合适的框架在Python,有许多框架可供选择,用于构建RESTful API。其中最流行的包括FlaskDjango。...使用版本控制:API的URL包含版本号,以便在未来进行更新和扩展时能够向后兼容。处理常见的问题在构建RESTful API时,可能会遇到一些常见的问题,如身份验证、数据验证、错误处理等。...以下是一些处理这些问题的最佳实践:身份验证授权:使用JWT(JSON Web Token)或OAuth等身份验证机制来保护API,确保只有授权用户才能访问受保护的资源。...数据验证:处理请求数据之前进行数据验证,以确保数据的完整性一致性,可以使用Flask-WTF或Django REST framework等库来实现数据验证。...错误处理API实现统一的错误处理机制,对于常见的错误情况(如资源未找到、权限不足等),返回适当的HTTP状态码错误信息,以便客户端能够正确处理错误情况。

    50530

    python测试开发django-60.token登录(TokenAuthentication)

    本篇使用djangorestframework框架写一个登陆的接口,登录成功后返回token。...环境准备: python 3.6 django 2.1.2 TokenAuthentication django rest framework权限认证有四种方式: BasicAuthentication...此身份验证方案使用HTTP基本身份验证,根据用户用户密码进行签名。...基本身份验证通常仅适用于测试 TokenAuthentication 此身份验证方案使用基于令牌的简单HTTP身份验证方案。 令牌认证适用于客户端 - 服务器设置,例如本机桌面移动客户端。...SessionAuthentication 此身份验证方案使用Django的默认会话后端进行身份验证。 会话身份验证适用于与您的网站在同一会话上下文中运行的AJAX客户端。

    3K30
    领券