На основе ролей или в стиле корзины для привязки Java bean? - PullRequest
0 голосов
/ 31 марта 2009

У меня есть POJO, который я хотел бы представить в виде XML из веб-службы, предпочтительно с JAX-B.

Поля, которые должны быть представлены в XML, зависят от того, какой тип пользователя делает запрос. Например, у нас есть роль для пользователей HumanResources и Finance. Пользователь может быть определен как:

@ XmlRootElement

публичный класс Пользователь {

@ XmlElement public String someHumanResourceData;

@ XmlElement public String someFinanceData;

}

Я хочу, чтобы пользователи отдела кадров видели данные отдела кадров, а финансы - данные финансового отдела, но не более того. HR не должен видеть финансовые данные.

Есть ли рекомендуемый подход, как это сделать? Какие поисковые термины я мог бы использовать для поиска дополнительной информации в Интернете?

Несколько идей, которые мне не нравятся: 1) Я мог бы использовать подклассы, чтобы выставить FinanceUser и HumanResourceUser, который имеет только соответствующие данные, и родительского пользователя с общими данными. Однако, это хрупко и может работать на небольшом примере, я чувствую, что мне нужен более гибкий, композиционный подход к производству. 2) Сотрудник рекомендует подход «корзина», в котором клиент запрашивает, какие поля он / она хочет с каждым запросом. Я не нахожу стандартного способа сделать это или даже многих других людей, которые сделали этот подход. Это звучит очень по-домашнему и трудоемко для меня.

Есть еще идеи?

1 Ответ

0 голосов
/ 31 марта 2009

Почему бы вам просто не проверить роль пользователя в реализации серверной веб-службы?

Какой у вас интерфейс веб-службы?

public interface DarcysWebService {
    public HumanResourceResponse getHumanResourceData(Authentication a, HumanResourceRequest req);
    public FinanceResponse getFinanceData(Authentication a, FinanceRequest req);
}

Затем я проверю предоставленные данные аутентификации (имя пользователя, пароль) в вашей базе данных пользователей (uuid, имя пользователя, пароль, роль), а затем использую роль, чтобы определить, является ли ответ сообщением «Ошибка - вы не «не иметь прав доступа» или фактически заполнить поля / объекты данных в ответе запрошенными данными.

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