2011-09-16 1068 views
6

Estoy tratando de configurar un entorno con Spring MVC y Apache Shiro. Estoy siguiendo los artículos mencionados en shiro.apache.org.Spring MVC y Shiro Configuration usando archivos ini

Estoy usando Spring's DelegatingFilterProxy como Shiro Filter en web.xml.

El filtrado de las corrientes se realiza mediante:

<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> 

pregunta es, cómo se utiliza el archivo shiro.ini definir la configuración de seguridad?

Respuesta

8

No necesita utilizar shiro.ini. Todo el resto de su configuración puede (y debería, ya que está utilizando ShiroFilterFactoryBean) hacerse en primavera.

Por ejemplo, la adición de un administrador de caché basada SecurityManager y Ehcache a su 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"/> 
+0

Sí, ericacm tiene razón; INI es el formato de configuración predeterminado de Shiro si no hay otro mecanismo de configuración disponible. Dado que Spring ya proporciona un mecanismo de configuración muy potente, las aplicaciones de Spring deberían configurar Shiro vía Spring directamente. Esto también es típicamente más poderoso que INI ya que puedes usar cosas como Spring's PropertyPlaceholderConfigurer y otras conveniencias de Spring para hacer que la configuración de Shiro sea aún mejor. –

+0

Eric/Les, gracias. Todavía estoy lanzando con Shiro y es genial. Todavía no recibí una documentación correcta que explica la integración de spring-shiro-jdbcRealm con una aplicación de muestra. ¿Podrias ayudarme por favor? –

+0

@sourcedelica Necesito agregar FacesAjaxAwareUserFilter.¿Cómo puedo hacer eso? [principal] user = com.example.filter.FacesAjaxAwareUserFilter user.loginUrl = /login.xhtml [usuarios] admin = contraseña [urls] /login.xhtml = user /app/** = user – Dileep

8

Puede comprobar la documentación shiro aquí http://shiro.apache.org/reference.html, que contiene todo, en primavera, como Les dijo que, por lo general definir diferentes granos en vez de utilizar el archivo shiro.ini, pero también se puede utilizar este archivo para la autenticación, utilice IniRealm como:

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

detalle más se refiere a here

Cuestiones relacionadas