DRF 使用 simpleJWT登陆认证(一)基本使用入门
JSON Web Token不再维护,故不使用。官方建议的是使用simpleJWT认证并且最新版本的Django和DRF如果使用JSON Web Token,项目启动会报错ImportError: Could not import 'rest_framework_jwt.authentication.JSONWebTokenAuthentication' for API setting 'DEFA
·
- JSON Web Token不再维护,故不使用。
- 官方建议的是使用simpleJWT认证
- 并且最新版本的Django和DRF如果使用JSON Web Token,项目启动会报错
ImportError: Could not import 'rest_framework_jwt.authentication.JSONWebTokenAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: cannot import name 'smart_text' from 'django.utils.encoding'
simpleJWT简单使用的步骤:
1、安装
pip install 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、验证
- 登录接口,返回refresh和access值
- 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.py
class TestView(APIView):
# permission_classes = []
def get(self, request):
print(request.user)
return Response('test')
需要在请求头加上Authorization,格式:Bearer [token值] 有空格
更多推荐
已为社区贡献2条内容
所有评论(0)