2016-07-27 6 views
0

Я использую API и пытаюсь использовать токен. Я хочу достичь: 1, клиент выдает запрос серверу с токеном в заголовке; 2, сервер проверяет токен и что-то делает (один раз).django: настраиваемая аутентификация токена

Заглядывая в DRF, Если я хотел бы перезаписать функцию аутентификации, мне также нужно вернуть объект User или собственный пользовательский объект User. Я не хотел бы возвращать какой-либо объект User, потому что весь процесс не включает никакого Пользователя, только токен и разрешение что-то делать. Как это сделать?

Благодаря

ответ

1

Прежде всего создать модель токена в 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'} 
+0

Ее прекрасное решение. Но нужно сделать некоторую настройку, чтобы заставить ее работать –

Смежные вопросы