2015-04-24 1 views
0

я работаю на веб-проекта с использованием Java/Spring/Apache Shiro, есть 3 различных типов пользователей в 3-х отдельных таблиц БД, 2 пользователь входа в систему с веб-страницы , 1 пользовательский тип входа с мобильного.Apache Shiro - Как поддерживать несколько типов пользователей с отдельными таблицами базы данных

Я внедрил Realm, который расширяет AuthorizingRealm, но мне представляется сложным предоставить единый Restful API, позволяющий вводить 3 пользовательских типа для входа.

Моя текущая мысль:

Определение нового маркера класс, который расширяет UsernamePasswordToken, и добавить новое поле accountType, когда пользователь Войти первый проверить тип счета из параметров, а затем решить, какие таблицы для запроса, а также использовать комбинацию от accountType и username как Principal.

Мой вопрос:

  1. Будет выше мысль работы? Или как я должен это улучшить?
  2. Как определить loginUrl для 3-х разных пользователей, особенно для мобильного клиента, он должен быть json result, кроме URL-адреса, не так ли?

ответ

0

У меня есть проблема решена.

Вот что я сделал:

  • Реализовать UsernamePasswordToken и добавить поле ВидСчета.
  • Использовать accountType:username в качестве принципала. Необходимо переопределить соответствующие методы.
  • При входе в систему пользователь должен указать параметр accountType.
  • Когда запрос db, в соответствии с типом accountType, запрашивает другую таблицу.