JWT的优点:
体积小,因而传输速度更快
多样化的传输方式,可以通过URL传输、POST传输、请求头Header传输(常用)
简单方便,服务端拿到jwt后无需再次查询数据库校验token可用性,也无需进行redis缓存校验
在分布式系统中,很好地解决了单点登录问题
很方便的解决了跨域授权问题,因为跨域无法共享cookie
jwt的安装
pip3 install -i https://pypi.douban.com/simple/ djangorestframework-jwt (使用豆瓣镜像源下载)
在setting里面注册
'rest_framework.authtoken',
路由
path('api-token-auth/',obtain_jwt_token),(使用post方法 在请求体里面传入username和password)
配置
importdatetime
JWT_AUTH={
'JWT_EXPIRATION_DELTA':datetime.timedelta(days=7),# Token 过期时间为一周
'JWT_AUTH_HEADER_PREFIX':'JWT',# Token的头为:JWT adashkjdhaskjhd21312312
'JWT_ALLOW_REFRESH':False,# 允许刷新吗
'JWT_RESPONSE_PAYLOAD_HANDLER':'app06.utils.jwt_response_payload_handler',# 规定jwt返 回的数据}
自定义返回数据
1. 新建一个util的py文件
2.定义一个函数 jwt_response_payload_handler
权限
新建一个permission的py文件
创建一个类继承BasePermission
在view里面添加权限