pi的通信采用token + ssl,简化和方便线上脚本的调用。Django版本1.8.16,djangorestframework版本3.5.3,用了框架提供的rest_framework.authtoken.views.obtain_auth_token和rest_framework.authentication.TokenAuthentication后,发现了一个问题,前者认证通过创建token后,这个token就不会自动更新了,非常不安全,非常危险。后者验证时候是不带缓存的,需要查询数据库,由于每次请求都要验证token,请求相当频繁,感觉不是很爽。
1、实现生成的token带过期时间
首先在setting.py配置文件设置过期时间 REST_FRAMEWORK_TOKEN_EXPIRE_MINUTES,这里设置为60分钟
#
REST_FRAMEWORK_TOKEN_EXPIRE_MINUTES
=
60
#
|
setting.py同目录文件view.py编辑一个视图
#
#coding=utf8
import
datetime
from
django.conf
import
settings
from
rest_framework
import
status
from
rest_framework.response
import
Response
from
rest_framework.authtoken.models
import
Token
from
rest_framework.authtoken.views
import
ObtainAuthToken
EXPIRE_MINUTES
=
getattr
(settings,
'REST_FRAMEWORK_TOKEN_EXPIRE_MINUTES'
,
1
)
class
ObtainExpiringAuthToken(ObtainAuthToken):
"""Create user token"""
def
post(
self
, request):
serializer
=
self
.serializer_class(data
=
request.data)
|