DRF 使用 simpleJWT登陆认证 基本使用入门

2022-08-17 08:27:21
  • JSON Web Token不再维护,故不使用。
  • 官方建议的是使用simpleJWT认证
  • 并且最新版本的Django和DRF如果使用JSON Web Token,项目启动会报错
 ImportError: Could notimport'rest_framework_jwt.authentication.JSONWebTokenAuthentication'for API setting'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: cannotimport name'smart_text' from'django.utils.encoding'

simpleJWT官方文档

simpleJWT简单使用的步骤:

1、安装

pipinstall djangorestframework-simplejwt

2、配置

# settings.py
INSTALLED_APPS=[...'rest_framework',# add'rest_framework_simplejwt',# add]

REST_FRAMEWORK={'DEFAULT_PERMISSION_CLASSES':('rest_framework.permissions.IsAuthenticated',),'DEFAULT_AUTHENTICATION_CLASSES':('rest_framework_simplejwt.authentication.JWTAuthentication','rest_framework.authentication.SessionAuthentication','rest_framework.authentication.BasicAuthentication',),}
SIMPLE_JWT={# token有效时长(返回的 access 有效时长)'ACCESS_TOKEN_LIFETIME': datetime.timedelta(seconds=30),# token刷新的有效时间(返回的 refresh 有效时长)'REFRESH_TOKEN_LIFETIME': datetime.timedelta(seconds=20),}

3、配置路由

# urls.py
urlpatterns=[# 登录
    path('login/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('verify/', TokenVerifyView.as_view(), name='token_verify'),]

4、验证

登录接口

  • 登录接口,返回refreshaccess
  • refresh用来刷新获取新的Token值
  • access用来请求身份认证的Token
  • access的过期时间参照配置ACCESS_TOKEN_LIFETIME
  • refresh的过期时间参照配置REFRESH_TOKEN_LIFETIME
  • 当用refresh刷新后,access的过期时间等于【当前刷新的此刻时间+ACCESS_TOKEN_LIFETIME】

验证
刷新

5、认证

# urls.py
urlpatterns=[...
    path('test/', views.TestView.as_view()),]
# views.pyclassTestView(APIView):# permission_classes = []defget(self, request):print(request.user)return Response('test')

在这里插入图片描述
需要在请求头加上Authorization,格式:Bearer [token值] 有空格
在这里插入图片描述

  • 作者:豌豆code
  • 原文链接:https://blog.csdn.net/u014783334/article/details/124831902
    更新时间:2022-08-17 08:27:21