用Django全栈开发(进阶篇)——11. Django REST framework实现Token验证

本文介绍如何使用Django REST Framework实现Token验证,适用于前后端分离的项目。内容包括集成Token Authentication,修改User Model,创建并验证Token,以及在视图中应用Token验证。通过实例展示了在Postman中测试Token验证的过程。
摘要由CSDN通过智能技术生成

大家好,这是皮爷给大家带来的最新的学习Python能干啥?之Django教程的进阶版

很抱歉这篇文章更新的晚了,原因是皮爷这段时间一直在日本换工作,经过一个月的煎熬,最后终于拿到了想要去的公司的offer。以后可以将peekpa.com和工作相结合,创建更加牛逼的peekpa.com 同时为大家制作更加详细的,有内容的教程。

在之前《用Django全栈开发》系列专辑里面,皮爷详细的阐述了如何编写一个完整的网站,具体效果可以浏览线上网站:Peekpa.com

从进阶篇开始,每一篇文章都是干货满满,干的不行。这一节,我们来说:如何通过Django REST Framework来实现Token验证。为我们的前后端分离做最后的准备

Peekpa.com的官方地址:http://peekpa.com

获取整套教程源码唯一途径,关注『皮爷撸码』,回复『peekpa.com』

皮爷的每一篇文章,都配置相对应的代码。这篇文章的代码对应的Tag是“Advanced_11”。

在这里插入图片描述

背景了解

我们这里所说的验证,英文实际是Authentication。为什么要提到这个?原因很简单,在未来我们前后端分离的程序中,当我们前端登录了后台系统之后,随后每一次发送的HTTP请求,我们都要想一个办法来确认这个HTTP请求正好是那个登录过的人发送的,而不是中间黑客劫持或者伪造的,这样,我们就需要让HTTP请求在发送的过程中,携带一个验证身份的东西,这个验证身份的东西,就是我们今天所说的Token Authentication。

当然,在实际的生产过程中,我们的验证方式其实有很多,但是这里我们就先拿来Django REST Framework提供的TokenAuthentication来试验一下。

相关的TokenAuthentication参考文档,可以去查阅官方文档:

https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication

我们这里想要验证的,当然就是我们当时前后端分离的数据中心页面了。

集成Token Authentication

第一步,当然是要修改我们的setting.py文件了。我们需要将以下内容添加进去:

INSTALLED_APPS = [
    ### ...先前内容省略...
    'rest_framework.authtoken',
]

REST_FRAMEWORK = {
   
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django REST framework (DRF) 可以使用 Token 认证、Session 认证和 JSON Web Token (JWT) 认证等方式进行登录验证。 其中,Token 认证和 Session 认证是最基本的认证方式,它们都使用了 Django 自带的用户认证系统,适合于简单的应用场景。Token 认证是通过在请求头中添加 Token 来进行认证,而 Session 认证则是在 Cookie 中保存 Session ID 来进行认证。 JWT 认证则是一种更加灵活和安全的认证方式,它使用了基于 JSON 的 Token,可以完全脱离 Django 自带的用户认证系统,支持跨域访问和分布式系统。JWT 认证需要在 DRF 中添加相应的中间件和配置,同时也需要在前端实现 Token 的生成和保存。 在 DRF 中使用 Token 认证或 Session 认证,只需要在 settings.py 文件中添加相应的认证方式,如: ```python REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.SessionAuthentication', ], } ``` 在视图函数中使用 `@authentication_classes` 装饰器来指定认证方式,如: ```python from rest_framework.decorators import authentication_classes from rest_framework.authentication import TokenAuthentication, SessionAuthentication @authentication_classes([TokenAuthentication, SessionAuthentication]) @api_view(['GET']) def my_view(request): # ... ``` JWT 认证需要使用第三方库 `djangorestframework-jwt`,并在 settings.py 文件中添加相应的配置,如: ```python 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_ALGORITHM': 'HS256', 'JWT_ALLOW_REFRESH': True, 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7), 'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=30), } ``` 在视图函数中使用 `@jwt_authetication_classes` 装饰器来指定 JWT 认证方式,如: ```python from rest_framework_jwt.authentication import JSONWebTokenAuthentication from rest_framework.decorators import jwt_authetication_classes @jwt_authetication_classes([JSONWebTokenAuthentication]) @api_view(['GET']) def my_view(request): # ... ``` 以上是 DRF 中常见的登录验证方式,可以根据具体的应用场景选择合适的认证方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值