У меня есть быстрый вопрос. Для моего файла API.py У меня есть следующий код:Django-Tastypie: аутентификация и авторизация
class MyAuthentication(BasicAuthentication):
def is_authenticated(self, request, **kwargs):
if request.method == 'GET':
return True
else:
#group_name = request.body('group')
#if Group.objects.filter(name = group_name):
# return super(MyAuthentication, self).is_authenticated(request, **kwargs)
return super(MyAuthentication, self).is_authenticated(request, **kwargs)
class MyAuthorization(DjangoAuthorization): #checks permissions
def is_authorized(self, request, object=None):
if request.method == 'GET':
return True
return super(MyAuthorization, self).is_authorized(request, object)
class Sys_teamResource(ModelResource):
class Meta:
queryset = Sys_team.objects.all()
resource_name = 'sys_team'
filtering = { 'sys_team' : ALL }
authentication = MyAuthentication()
authorization = MyAuthorization()
validation = FormValidation(form_class=Sys_team_Form)
allowed_methods = ['get','post','put']
Этот код работает отлично, но мне было интересно, что бы happenwhen я заменил return super(MyAuthorization, self).is_authorized(request, object)
с return False
. Концептуально это должно лишить всех разрешений аутентифицированного пользователя и отказать им в POSTING в базе данных. Однако пользователь все еще может. Мне было интересно, почему это было? Кроме того, что касается вышеописанного кода, я пытаюсь аутентифицировать пользователя, только если он принадлежит к определенной группе. Однако, когда я пытаюсь выполнить request.body('group')
, я получаю объект ошибки str, который не может быть вызван. Любая помощь очень ценится! Благодарю.