Django Piston — есть ли декоратор login_required? Если нет, то как мы вызываем ошибки?

Я не могу понять, как обеспечить аутентификацию пользователя в Piston. Вот что я пробовал.

  1. Декоратор Login_required в Piston. Похоже, это не работает, поэтому я посмотрел и нашел аутентификацию в Piston.
  2. HTTPBasicAuthentication, похоже, регистрирует пользователя, а не гарантирует, что пользователь is_authenticated. Я просто хочу убедиться, что они аутентифицированы перед публикацией данных.
  3. Написал код вручную, чтобы проверить, является ли user.is_authenticated. Но тогда, когда пользователь не аутентифицирован, как мне вызвать ошибку, которая соответствует ответу об ошибке Piston?

После этого я застрял. Спасибо за любую помощь.

ОБНОВЛЕНИЕ: хорошо, я понял часть ошибки. По крайней мере, я могу сделать это вручную. Если кто-то хочет знать, вот что.

from piston.utils import rc
resp = rc.BAD_REQUEST
resp.write("Need to be logged in yo")
return resp

person killerbarney    schedule 01.02.2011    source источник


Ответы (2)


  • Создайте отдельный обработчик для ваших анонимных клиентов в файле handlers.py, расширив piston.handler.AnonymousBaseHandler, как описано здесь.
  • Настройте Resource в своем urls.py, используя параметр authentication, как в этом вопросе.

редактировать: на самом деле, войдя в систему, пользователь в piston.authentication.HttpBasicAuthentication делает убедиться, что пользователь прошел проверку подлинности. Попробуй это

def read(self, request):
    return {'user': request.user.is_authenticated()}

в своем обработчике и протестируйте его с помощью curl -u user:password <url>. Вы получите

{
    "user": true
}

в вашем теле ответа.

person Chris Wesseling    schedule 02.03.2011

Ваша часть ошибки работает, но вы возвращаете код состояния 400, делая то, что является неверным запросом, было бы более «RESTful», чтобы вернуть код состояния 401, который является неавторизованным.

    resp = HttpResponse("Authorization Required")
    resp.status_code = 401 

Вот список всех кодов состояния: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

person joekrell    schedule 25.03.2011