Как использовать RBAC (или контроль доступа) в Google App Engine?

#google-app-engine #gwt #access-control #rbac

#google-app-engine #gwt #управление доступом #rbac

Вопрос:

Кто-нибудь использовал какой-нибудь RBAC (или другой контроль доступа) в проекте на основе GWT, развернутом в App Engine?
Или на самом деле, как управлять вызовами GWT-RPC на основе ролей?

Или проще только «отправить код» в клиентский браузер на основе учетных данных пользователя для входа?

Идеи, библиотеки — все приветствуется!

Спасибо

Ответ №1:

Вы могли бы добавить свойство roles в свой пользовательский класс:

 class MyUser(db.Model):
  roles = db.ListProperty(db.Key)

class Role(db.Model):
  ...
  

Затем, когда вы хотите узнать, может ли пользователь что-то сделать, сделайте что-то вроде этого:

 if required_role in current_user.roles:
  do_the_thing()
else:
  warn_sternly()
  

Что вам нужно смоделировать, так это то, кто в каких ролях. Это отношение «многие ко многим» (по крайней мере, в большинстве приложений). Это один из способов реализовать такую взаимосвязь, но есть и другие способы, которые могут быть более подходящими для вашей ситуации. Вот страница, на которой есть несколько советов по моделированию отношений в App Engine: https://developers.google.com/appengine/articles/modeling