В Restlet у вас есть класс SecretVerifier
с абстрактным методом verify(String identifier, char[] secret)
, который вы должны переопределить в своем подклассе.Базовый класс также создаст объект User
, инициализированный идентификатором.Пока все хорошо.
Теперь необходимо реализовать интерфейс Enroler
для «добавления» ролей к вышеупомянутому объекту User
(который передается подклассу через объект ClientInfo
).Здесь вы «добавляете» роли к объекту User.
Предположим, что ChallengeAuthenticator
используется для аутентификации.
Вопрос : Оба эти класса довольноотличается, и у вас нет доступа к соответствующим объектам запроса / ответа.Сама конструкция вынуждает вас выполнить 2 поездки в БД - одну для проверки пароля и одну для получения ролей пользователя.Это эффективный дизайн?
Вы можете, так сказать, получить все в одном запросе.И так как оба класса будут вызывать соответствующие DAO по отдельности, к БД будет 2 вызова.
Конечно, вы можете получить слегка запутанный код, переопределив SecretVerifier.getIdentifier(Request req, Response resp)
, а затем использовать его для извлечения всего и добавления ролей.- но метод verify
, кажется, является частью шаблона template
, и вы не можете реально контролировать то, что происходит в базовом классе, если вы непосредственно не реализуете Verifier
, не изобретаете колесо и не настраиваете код когда-либотак немного ... но вопрос о дизайнерском решении.Я не хочу начинать дебаты.Я просто хочу знать, что-то вроде этого (2 поездки) один для проверки подлинности, другой для ролей довольно распространен и эффективен при умеренно высоких нагрузках?