主要的问题是token字符串的设置,我所使用网页调试工具Postman
urls.py # jwt的认证接口 path('api/login/', obtain_jwt_token), 此时使用postman进行登录的调试,此时jwt认证默认json数据只返回token; 此时带上已有的token请求需要登录认证的接口,出现错误如下图;(身份认证信息未提供) 这里有必要说明以下,headers中的key是Authorization, value是token当然这是前端的代码, 原理相同,使用postman请求时,要对应的在headers中填好键值对
在users下创建一个utils.py, JWT在setting中进行配置,下面会有说明
# 自定义jwt认证成功返回数据 def jwt_response_payload_handler(token, user=None, request=None): return { 'token': 'JWT '+ token, # 这里的'JWT '必须有空格, 'user_id': user.id, 'username': user.username }settings.py中相应的配置如下,
JWT_AUTH = { # token有效期 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), # 设置名称 保证前后端的对应的Token变量名相同 'JWT_AUTH_HEADER_PREFIX': '', # Authorization前缀不配置默认为‘JWT’ 'JWT_RESPONSE_PAYLOAD_HANDLER': 'apps.users.utils.jwt_response_payload_handler', }