Лучшие практики для хранения глобально необходимых объектов в GWT - PullRequest
7 голосов
/ 24 января 2012

Я начинаю разрабатывать приложение GWT в стиле MVP (GWTP), которое использует Spring-безопасность для аутентификации и авторизации на стороне сервера.

Во многих видах приложения я должен включать или отключать элементы управления в соответствии с предоставленными полномочиями текущего пользователя. У меня уже есть служба RPC, которая предоставляет доступ к userDetailsDto, содержащему всю необходимую информацию.

Теперь мой вопрос: Как лучше всего хранить пользовательские DTO на стороне клиента?

Поскольку права пользователей актуальны во многих докладчиках, я должен был бы распространять их повсюду. В качестве альтернативы я мог бы установить экземпляр службы RPC в каждом докладчике и каждый раз запрашивать данные пользователя (возможно, кэшированные на стороне клиента). Но мне не нравится идея иметь службу RPC пользователя в каждом докладчике только для этой цели.

Честно говоря, я бы предпочел центральный реестр, где размещать объект UserDetails и который доступен из любого места в моем приложении. В GWT уже есть такой реестр?

Как и в моем примере, вы часто сталкиваетесь с горизонтально используемыми объектами. Как с ними бороться в GWT?

Ответы [ 2 ]

5 голосов
/ 24 января 2012

Просто сохраните вашего текущего пользователя в публичной статической переменной.Это будет доступно отовсюду.

4 голосов
/ 24 января 2012

Я внедряю объект «AppState» во всех докладчиков, которым необходимо знать такие вещи, как права пользователя, вошедшего в систему, его предпочтения и т. Д. Я предпочитаю внедрение общедоступной статической переменной, потому что она более контролируема, прощемакет в тестах, и дополнительная типизация заставляет меня задуматься, нужен ли каждому объекту доступ к глобальным данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...