1

我是Spring的新手,所以如果我的问题很愚蠢,请原谅我......

我正在尝试按照一些示例在 Spring Web 应用程序上配置安全性。我已将其配置为使用 ldap 目录。现在我需要在进程中添加缓存,以便每次请求凭据时都不会从 ldap 目录中获取凭据。

为此,我添加了cache-ref="userCache"如教程中所示:

<authentication-manager>
   <authentication-provider>
     ...
    <ldap-user-service server-ref="ldapServer"
       user-search-filter="uid={0}" user-search-base="ou=people"
       group-search-filter="member={0}" group-search-base="ou=groups"
       cache-ref="userCache" />
   </authentication-provider>
</authentication-manager>

beanuserCache定义如下:

 <beans:bean id="userCache"             
    class="org.springframework.security.providers.
    dao.cache.EhCacheBasedUserCache">
    <beans:property name="cache" ref="userEhCache" />
 </beans:bean>
 <beans:bean id="userEhCache"
     class="org.springframework.cache.ehcache.EhCacheFactoryBean">
     <beans:property name="cacheManager" ref="cacheManager" />
     <beans:property name="cacheName" value="userCache" />
 </beans:bean>

缓存管理器定义如下:

  <bean id="cacheManager"
   class="org.springframework.security.core.userdetails.cache.EhCacheManagerFactoryBean" />

这种配置的问题是我无法获取 jars,因为它们基于 spring 2 的旧版本。我使用的缓存管理器

 <bean id="cacheManager"
 class="net.sf.ehcache.CacheManager" />

但是我不知道从春天 2 到哪里可以得到它们,如果我添加到我的项目中,它会阻止一切org.springframework.cache.ehcache.EhCacheFactoryBeanorg.springframework.security.providers.dao.cache.EhCacheBasedUserCache

我将不胜感激在这件事上的任何帮助。如果您有其他解决方案,请提出一些建议。谢谢!

4

1 回答 1

2

在 Spring 3.0.xorg.springframework.cache.ehcache.EhCacheFactoryBean中,位于spring-context-support-3.0.x.RELEASE.jar中。

没有类org.springframework.security.providers.dao.cache.EhCacheBasedUserCache,但有类org.springframework.security.core.userdetails.cache.EhCacheBasedUserCache位于spring-security-core-3.0.x.RELEASE.jar

于 2012-07-04T09:10:25.787 回答