Настройка авторизации на конечных точках ресурсов в Python EVE

Я реализовал свой веб-сервис в Python eve. У меня есть несколько конечных точек, таких как люди, адрес и т.д.

Определение схемы конечных точек выглядит следующим образом:

RESOURCE_METHODS = ['GET', 'POST', 'DELETE']

ITEM_METHODS = ['GET', 'PATCH', 'PUT', 'DELETE']

people = {
  'item_title': 'person',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_people,
  'public_methods': ['POST']
  }

org = {
  'item_title': 'org',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_people_org
  }

puburl = {
  'item_title': 'puburl',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_people_pub_url
  }

address = {
  'item_title': 'address',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_people_address
 }

contactnumber = {
  'item_title': 'contactnumber',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_people_contact_number
 }

template = {
  'item_title': 'template',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_template
 }

usersharedcontacts = {
  'item_title': 'usersharedcontacts',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_people_with_user_shared_contacts
 }

cardholder = {
  'item_title': 'cardholder',
  'cache_control': 'max-age=10,must-revalidate',
  'cache_expires': 10,
  'resource_methods': ['GET', 'POST'],
  'schema': dbtableSchema.schema_people_card_holder
 }

DOMAIN = {
  'people': people,
  'org': org,
  'puburl': puburl,
  'address': address,
  'contactnumber': contactnumber,
  'template': template,
  'usersharedcontacts': usersharedcontacts,
  'cardholder': cardholder
 }

Я реализовал аутентификацию, чтобы сделать POST вызов на конечной точке people свободной, т. е. профиль пользователя может быть создан без какой-либо аутентификации, и таблица people в БД будет заполнена.

Теперь я хочу убедиться, что после аутентификации пользователя он/она не сможет изменить информацию другого пользователя. Есть ли способ в Python EVE справиться с этим.

[EDIT]:- There was some bug in my code , @Niccola's Solution worked properly ..


person tushar_sappal    schedule 24.05.2015    source источник


Ответы (1)


Вы можете использовать функцию Ограниченный доступ пользователей к ресурсам. Цитата из документов:

Когда эта функция включена, каждый сохраненный документ связывается с учетной записью, которая его создала. Это позволяет API прозрачно обслуживать только документы, созданные учетной записью, по всем типам запросов: чтение, редактирование, удаление и, конечно же, создание. Для корректной работы необходимо включить аутентификацию пользователя.

person Nicola Iarocci    schedule 25.05.2015
comment
Привет @nicola-iarocci, я просмотрел документацию, как описано на EVE странице официальной документации, я не могу точно определить шаги для реализации этого подхода. Было бы очень полезно, если бы я мог получить некоторые фрагменты кода и точные необходимые изменения. - person tushar_sappal; 25.05.2015
comment
Ваше решение сработало правильно, спасибо за помощь .. :) - person tushar_sappal; 26.05.2015