вкусный пирог: как добавить права пользователю?

Я создаю приложение IOS с помощью django-tastypie. Разрешение пользователя по умолчанию — только «получить» что-то. Однако пользователю может быть предоставлено разрешение «добавить» для публикации чего-либо. как создать API вкусного пирога? как предоставить разрешения пользователю с помощью django-tastypi?


person user1687717    schedule 20.11.2012    source источник


Ответы (1)


Во-первых, я хотел бы указать на нюанс между аутентификацией и авторизацией, который сбил меня с толку при использовании deliciouspie раньше:

  • Аутентификация означает «Докажите мне, что вы тот, за кого себя выдаете», т. е. некоторая форма входа в систему с паролем или ключом API.
  • Авторизация означает: «Теперь, когда я знаю, кто вы, позвольте мне проверить, какие у вас есть привилегии, т. е. позвольте мне посмотреть, к какой группе пользователей вы принадлежите / какие конкретные права предоставлены для вашей учетной записи пользователя, и т. д.

Теперь, имея это в виду, взгляните на очень лаконичные примеры. здесь, если вы еще этого не сделали.

Например, вот как вы можете ограничить пользователей доступом только к их собственной пользовательской информации:

# REST endpoint for authenticating user accounts
class UserResource(ModelResource):

    class Meta:
        queryset = User.objects.all()
        resource_name = 'auth/user'
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()

    def apply_authorization_limits(self, request, object_list):
        return object_list.filter(username=request.user)

А вот фрагмент того, как вы можете аутентифицировать пользователя при взаимодействии с представлением:

# first check that the user is allowed to post
username = form.cleaned_data['username']
password = form.cleaned_data['password'] # @todo: remove this for production
user = authenticate(username=username, password=password)
if user is None:
    raise Http404('Error: new_frame: invalid username / password')
if not user.is_active:
    raise Http404('Error: new_frame: your account is inactive')
# username / password is correct + user is active, proceed with posting
person sampson-chen    schedule 20.11.2012
comment
Я использую DjangoAuthorization(), но, например, как добавить пользователю разрешение add_message? - person user1687717; 20.11.2012