文章目录
1.JWT安装配置1.1 安装JWT1.2 `syl/settings.py`配置jwt载荷中的有效期设置1.3 `syl/settings.py`JWT结合DRF进行认证权限配置`user/urls.py`增加获取token接口和刷新token接口1.5 在`user/utils.py`中从写jwt_response_payload_handler
2.postman测试接口2.1 测试登录接口,获取token2.2 使用获得的token获取所有用户信息
1.JWT安装配置
1.1 安装JWT
pip install djangorestframework-jwt==1.11.0
1.2 syl/settings.py配置jwt载荷中的有效期设置
JWT_AUTH
= {
'JWT_AUTH_HEADER_PREFIX': 'JWT',
'JWT_EXPIRATION_DELTA': datetime
.timedelta
(days
=1),
'JWT_ALLOW_REFRESH': True,
'JWT_REFRESH_EXPIRATION_DELTA': datetime
.timedelta
(hours
=24),
'JWT_RESPONSE_PAYLOAD_HANDLER': 'user.utils.jwt_response_payload_handler',
}
1.3 syl/settings.pyJWT结合DRF进行认证权限配置
REST_FRAMEWORK
= {
...
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
...
}
user/urls.py增加获取token接口和刷新token接口
from django
.urls
import include
, path
from rest_framework
.authtoken
.views
import obtain_auth_token
from user
import views
from rest_framework
.routers
import SimpleRouter
, DefaultRouter
from rest_framework_jwt
.views
import obtain_jwt_token
, refresh_jwt_token
router
= DefaultRouter
()
router
.register
(r
'user', views
.UserViewSet
)
urlpatterns
= [
path
('index/', views
.index
),
path
('login/', obtain_jwt_token
),
path
('refresh/', refresh_jwt_token
),
path
('api-auth/', include
('rest_framework.urls',namespace
='rest_framework')),
]
urlpatterns
+= router
.urls
1.5 在user/utils.py中从写jwt_response_payload_handler
def jwt_response_payload_handler(token
, user
=None, request
=None, role
=None):
"""
自定义jwt认证成功返回数据
:token 返回的jwt
:request 当前本次客户端提交过来的数据
:role 角色
"""
if user
.first_name
:
name
= user
.first_name
else:
name
= user
.username
return {
'authenticated': 'true',
'id': user
.id
"role": role
,
'name': name
,
'username': user
.username
,
'email': user
.email
,
'token': token
,
}
2.postman测试接口
2.1 测试登录接口,获取token
http://192.168.56.100:8888/user/login/
'''自定义认证和权限优先级更高,可以覆盖settings.py中的 '''
permission_classes
= (MyPermission
,)
authentication_classes
= (JSONWebTokenAuthentication
,)
2.2 使用获得的token获取所有用户信息
http://192.168.56.100:8888/user/user/