我在做API,并尝试使用令牌。我想实现: 1,客户端在头部向令牌服务器发出请求; 2,服务器验证令牌并做某事(一次)。
查看DRF,如果我想覆盖authenticate函数,我还需要返回User对象或我们自己的自定义User对象。我不想返回任何User对象,因为整个过程不涉及任何用户,只是令牌和许可做某事。怎么做?
由于
答案 0 :(得分:2)
首先在models.py中创建模型令牌,您还需要创建token_required装饰器。每当用户登录令牌创建时以及当他注销令牌销毁时。
登录:
def login(request):
username=request.payload.get('username')
password=request.payload.get('password')
user,err=Auth.authenticate(username,password)
if err:
raise Exception()
token=Token.generate()
#you can return user
return {'token':token}
装饰:
def token_required(func):
def inner(request, *args, **kwargs)
try:
request.token=Token.objects.get(token=token)
return func(request, *args, **kwargs)
except Token.DoesNotExists:
pass
return inner
注销:
@token_required
def logout(request):
if request.method=='POST':
request.token.delete()
return {'status':'ok'}