0
我正在做API,並嘗試使用令牌。我想實現: 1,客戶端向標頭中的令牌發送一個請求到服務器; 2,服務器驗證令牌並做一些事情(一次)。django:自定義令牌認證
縱觀DRF,如果我想覆蓋authenticate函數,我還需要返回User對象或我們自己定製的User對象。我不想返回任何用戶對象,因爲整個過程不涉及任何用戶,只是令牌和許可做某事。這個怎麼做?
感謝
我正在做API,並嘗試使用令牌。我想實現: 1,客戶端向標頭中的令牌發送一個請求到服務器; 2,服務器驗證令牌並做一些事情(一次)。django:自定義令牌認證
縱觀DRF,如果我想覆蓋authenticate函數,我還需要返回User對象或我們自己定製的User對象。我不想返回任何用戶對象,因爲整個過程不涉及任何用戶,只是令牌和許可做某事。這個怎麼做?
感謝
首先在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'}
它是一種很好的解決方案。但一些調整必須完成,使其工作 –