使用Django REST框架实现令牌认证

2021年4月22日15:19:52 发表评论 851 次浏览

令牌身份验证是指为将在所有后续请求中使用的令牌交换用户名和密码, 以便识别服务器端的用户。本文主要涉及使用Django REST框架实现令牌身份验证, 以实现API。令牌认证通过提供令牌来交换用户名和密码来工作。

所需模块:

  • django:
    pip install django
  • crispy_forms:
     pip install --upgrade django-crispy-forms 
  • django rest_framework:
    pip install djangorestframework
  • HTTPie:
    pip install httpie

和一个添加API的项目, 我们在这里使用注册并登录

创建视图集和序列化器

转到给定项目的用户文件夹,并创建一个api文件夹来保存所有api相关的文件

cd user && mkdir api

现在, 使user/api/serializers.py和user/api/viewsets.py在api文件夹中

cd user/api && touch serializers.py viewsets.py
使用Django REST框架实现令牌认证1

现在编辑user/api/serializers.py

from rest_framework import serializers
from django.contrib.auth.models import User
  
  
class userSerializers(serializers.ModelSerializer):
  
     class Meta:
         model = User
         fields =  '__all__'

也编辑user/api/viewsets.py

from rest_framework import viewsets
from .serializers import userSerializers
from django.contrib.auth.models import User
  
  
class userviewsets(viewsets.ModelViewSet):
     queryset = User.objects. all ()
     serializer_class = userSerializers

编辑settings.py

加rest_framework和rest_framework.authtokeninINSTALLED_APPS在setting.py中

使用Django REST框架实现令牌认证2

如下编辑rest_framework设置

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
               'rest_framework.authentication.TokenAuthentication', ), 'DEFAULT_PERMISSION_CLASSES':(
                'rest_framework.permissions.IsAuthenticated', ), }
使用Django REST框架实现令牌认证3

创建路由器

转到project/,并创建router.py

cd project/&& touch router.py

编辑项目/router.py,

from user.api.viewsets import userviewsets
from rest_framework import routers
  
router = routers.DefaultRouter()
router.register( 'user' , userviewsets, base_name = 'user_api' )

编辑url.py

转到project/urls.py

并编辑

导入路由器和rest_framework.authtoken以进行令牌认证

from .router import router
from rest_framework.authtoken import views

添加与API相关的路径

path( 'api/' , include(router.urls)), path( 'api-token-auth/' , views.obtain_auth_token, name = 'api-tokn-auth' ),
使用Django REST框架实现令牌认证4

测试API

首先, 迁移模型

python manage.py migrate

使用以下命令启动服务器

python manage.py runserver

打开另一个终端, 让我们使用HTTP POST请求检查API以获取令牌, 然后粘贴用户名和密码。

http POST http://localhost:8081/api-token-auth/username='your_username' password="your_password"
使用Django REST框架实现令牌认证5

现在使用此令牌从API获取数据, 放置你的API令牌

http http://localhost:8081/api/user/"Authorization: Token API_KEY_HERE"
使用Django REST框架实现令牌认证6

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: