jwt 即 json web token。用于身份校验,当用户登录的时候,服务器会给用户分配一个token,服务不会保存。当用户需要访问服务器的时候,需要带着token,服务通过token来判断用户现在的状态,比如token失效不正确等。在小破站学习了一会大致了解了一点,这里记录一下。
实现方法这里不赘述。
导入包
pip install pyjwt
安装慢的话可以参考这篇博文----->传送门
配置
utils.py
自定义的工具文件,里面用于调用jwt包里面的函数来返回生成token
import jwt
import datetime
from django.conf import settings
def get_token(payload, timeout):
salt = settings.SECRET_KEY
headers = {
"typ": "jwt_",
"alg": "HS256",
}
payload["exp"] = datetime.datetime.utcnow() + datetime.timedelta(minutes=timeout) # 设置到期时间
token = jwt.encode(payload=payload, key=salt, headers=headers).decode("utf-8")
return token
登录视图
class LoginViewSet(ModelViewSet):
parser_classes = [MultiPartParser, JSONParser, FormParser]
# authentication_classes = []
"""视图集"""
queryset = models.User.objects.all()
serializer_class = UserModelSerializer
# 搜索
search_fields = ('id')
@action(methods=['post'], detail=False)
@csrf_exempt