Настройка области JDBC с использованием Apache Shiro для проекта Spring Roo - PullRequest
0 голосов
/ 04 декабря 2011

У меня есть проект Spring-Roo, настроенный с использованием ссылки Eclipse для моего уровня сохраняемости JPA, и я создал (User Roles, Users) Table для управления моей безопасностью. Мне было интересно, установил ли кто-нибудь область с проектом Spring для настройки Apache Shiro, чтобы он использовал таблицы базы данных для поиска имени пользователя и пароля, а также сохранял имена пользователей и пароли?

В настоящее время у меня есть файл Shiro.ini, который используется с несколькими тестовыми ролями и комбинациями (имя пользователя, пароль), но я пытаюсь выяснить, как вместо этого настроить мой файл web.xml, используя правильные фильтры. Ниже приведен мой файл web.xml и набор текущих фильтров.

<filter>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
 <!-- all declarations in shiro.ini file -->
<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
</filter>


<filter-mapping>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>ShiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

У кого-нибудь есть пример использования JDBC-области (Postgres) с Apache Shiro и Spring?

1 Ответ

3 голосов
/ 04 декабря 2011

Пожалуйста, смотрите Документация Shiro's Spring для правильной конфигурации web.xml.Он отличается от примера web.xml, который вы показали.

Поскольку XML-конфигурация Spring немного более мощная, чем INI Shiro, пользователям Spring рекомендуется использовать полную конфигурацию Spring вместо INI Shiro.См. Раздел «Веб-приложения» на этой странице, чтобы увидеть пример конфигурации Spring только для Shiro.

В части «applicationContext.xml» документации этой страницы вы увидите

<bean id="myRealm" class="...">
...
</bean>

часть конфигурации xml.Замените это своим определением компонента JdbcRealm.Вы можете внедрить источник данных, настроенный Spring, как и ожидалось:

<bean id="myRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
    <property name="dataSource" ref="springConfiguredDataSource"/>
    ...
</bean>  

Вы можете увидеть запросы SQL по умолчанию, которые выполняются, посмотрев исходный код JdbcRealm .

Вы можете настроить эти запросы по мере необходимости.

Обратите внимание, что если ваша модель данных достаточно сложна, так что JdbcRealm недостаточно для ваших нужд, то легко расширить AuthorizingRealm и выполнить Shiroпоиск пользователя / роли / разрешения с использованием любого API-интерфейса источника данных, который вы предпочитаете (JPA, Hibernate и т. д.).

...