身份验证drf版

参考官方文档

设置认证方案

全局设置
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    )
}
单个视图内设置

使用基于APIView的视图

from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

class ExampleView(APIView):
    authentication_classes = (SessionAuthentication, BasicAuthentication)
    permission_classes = (IsAuthenticated,)

    def get(self, request, format=None):
        content = {
            'user': unicode(request.user),  # `django.contrib.auth.User` instance.
            'auth': unicode(request.auth),  # None
        }
        return Response(content)

TokenAuthentication

此认证方案使用简单的基于令牌的 HTTP 认证方案。令牌身份验证适用于 client-server 架构,例如本机桌面和移动客户端。
要使用 TokenAuthentication 方案,您需要将认证类配置为包含 TokenAuthentication ,并在 INSTALLED_APPS 设置中另外包含 rest_framework.authtoken :

视图

authentication_classes = (TokenAuthentication,)  # Toekn认证

settings.py

INSTALLED_APPS = (
    ...
    'rest_framework.authtoken'
)

python3 manage.py makemigrations
python3 manage.py migrate   # 生成token表

创建令牌的方式

from rest_framework.authtoken.models import Token
token = Token.objects.create(user=...)  # user是一个UserProfile对象
print token.key

对于客户端进行身份验证,令牌密钥应包含在 Authorization HTTP header 中。关键字应以字符串文字 “Token” 为前缀,用空格分隔两个字符串。例如:
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

利用Postman软件操作

  • 生成token post方式


    image.png
  • 传递token get方式


    image.png

你可能感兴趣的:(身份验证drf版)