Могут ли команды быть перехвачены в зависимости от их типа? - PullRequest
0 голосов
/ 05 ноября 2018

In Axon , Перехватчики команд , кажется, перехватывают любую команду. Для проверки разрешений мне нужно основывать свое решение на типе команды, чтобы увидеть, разрешено ли это в текущем контексте.

@Override
public BiFunction<Integer, CommandMessage<?>, CommandMessage<?>> handle(List<? extends CommandMessage<?>> messages) {
    return (index, command) -> {
        // Check permissions
        return command;
    };
}

Обычно я бы предпочел зарегистрировать перехватчик для каждого типа команды и обрабатывать проверки разрешений в выделенных объектах. Как бы я сделал это с Аксоном? Нужно ли загружать instanceof операторов if в одном перехватчике? У кого-нибудь есть хороший пример проверки разрешений с Аксоном?

1 Ответ

0 голосов
/ 06 ноября 2018

На данный момент (Axon 4.0) платформа не позволяет вам регистрировать DispatchInterceptors непосредственно для каждого типа полезной нагрузки команды. Так что то, что вы предлагаете сделать, if-blocks / switch-Statement - это лучшее, что вы могли бы сделать на данный момент.

Хотя я не уверен, насколько тонки ваши проверки разрешений, вы могли бы сделать некоторую форму аннотации разрешений для команд с определенным значением / перечислением, которое вам нужно установить. Таким образом, вам не нужно напрямую привязывать свой тип полезной нагрузки к диспетчеру, а просто проверить, существует ли аннотация и, если да, проверить ее значение для вида проверки разрешений, которая должна быть выполнена для него.

Скорее всего, это приведет к гораздо меньшему выражению if-block / switch, чем проверка для каждого типа полезной нагрузки.

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