Spring MVC и конфигурация Широ с использованием INI-файлов

Я пытаюсь настроить среду с Spring MVC и Apache Shiro. Я слежу за статьями, упомянутыми на shiro.apache.org.

Я использую Spring DelegatingFilterProxy в качестве фильтра Широ в web.xml.

Текущая фильтрация выполняется с использованием:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager"/>
        <property name="loginUrl" value="/login"/>
        <property name="successUrl" value="/dashboard"/>
        <property name="unauthorizedUrl" value="/unauthorized"/>
        <property name="filterChainDefinitions">
            <value>
                /** = authc, user, admin
                /admin/** = authc, admin
                /login = anon
            </value>
        </property>
    </bean>

Вопрос в том, как мне использовать файл shiro.ini, определяющий настройки безопасности?


person Firdous Amir    schedule 16.09.2011    source источник


Ответы (2)


Вам не нужно использовать shiro.ini. Вся остальная часть вашей конфигурации может (и должна быть выполнена, поскольку вы используете ShiroFilterFactoryBean) в Spring.

Например, добавление менеджера кеша на основе securityManager и ehCache в ваш shiroFilter:

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="realm" ref="myRealm"/>
    <property name="sessionMode" value="native"/>
    <property name="sessionManager" ref="sessionManager"/>
    <property name="cacheManager" ref="cacheManager"/>
</bean>

<bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
    <property name="cacheManager" ref="ehCacheManager"/>
</bean>

<bean id="ehCacheManager" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>

<bean id="sessionDAO" 
    class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO"/>

<bean id="sessionManager"
    class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
    <property name="sessionDAO" ref="sessionDAO"/>
</bean>

<bean id="myRealm" class="com.foo.MyRealm"/>
person sourcedelica    schedule 16.09.2011
comment
Да, ericacm прав; INI — это формат конфигурации Shiro по умолчанию, если другой механизм конфигурации недоступен. Поскольку Spring уже предоставляет очень мощный механизм конфигурации, приложения Spring должны настраивать Shiro напрямую через Spring. Это также, как правило, более мощное, чем INI, поскольку вы можете использовать такие вещи, как Spring PropertyPlaceholderConfigurer и другие удобства конфигурации Spring, чтобы сделать конфигурацию Shiro еще лучше. - person Les Hazlewood; 17.09.2011
comment
Эрик/Лес, спасибо. Я все еще встречаюсь с Широ, и это здорово. Я до сих пор не получил подходящей документации, объясняющей интеграцию spring-shiro-jdbcRealm с образцом приложения. Не могли бы вы помочь? - person Firdous Amir; 17.09.2011
comment
@sourcedelica Мне нужно добавить FacesAjaxAwareUserFilter. Как я могу это сделать? [main] user = com.example.filter.FacesAjaxAwareUserFilter user.loginUrl = /login.xhtml [users] admin = password [urls] /login.xhtml = user /app/** = user - person Dileep; 03.02.2014

Вы можете проверить документацию shiro здесь http://shiro.apache.org/reference.html, она содержит все, весной , как сказал Лес, обычно определяют разные bean-компоненты вместо использования файла shiro.ini, но вы также можете использовать этот файл для аутентификации, используйте IniRealm, например:

<bean id="myRealm" class="org.apache.shiro.realm.text.IniRealm">
  <property name="resourcePath" value="classpath:/shiro.ini" />
</bean>

более подробная информация содержится в здесь< /а>

person Andy Ma    schedule 22.09.2013