國際化配置
<!-- 定義上下文返回的消息的國際化 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:config/messages_zh_CN"/> </bean>
basename中配置的是消息文件的路徑
在spring-security-core-3.2.0.M1.jar包中的org.springframework.security下可以找到國際化文件,可以直接拿來,這個類也可以用在項目中
@Autowired private MessageSource messageSource;
這樣就可以在類中引如MessageSource使用了,MessageSource提供了下面三個方法
1.String getMessage(String code, Object[] args, String defaultMessage, Locale locale);
2.String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException;
3.String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException;
比如我們在property文件中定義了如下消息
1.UserDetails.isLocked=用戶已被鎖定
2.UserDetails.userNotFound=用戶{0}不存在
然后使用getMessage方法
getMessage("UserDetails.isLocked",null,null) //用戶已被鎖定 getMessage("UserDetails.isLocked",new Object[]{“admin”},null) //用戶admin不存在
UserCache配置,通過ecahe實現
<!-- 啟用用戶的緩存功能 --> <bean id="userCache" class="org.springframework.security.core.userdetails.cache.EhCacheBasedUserCache"> <property name="cache" ref="userEhCache" /> </bean> <bean id="userEhCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheName" value="userCache" /> <property name="cacheManager" ref="cacheManager" /> </bean> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />
ehcache.xml
<cache name="userCache" maxElementsInMemory="100" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="3600" overflowToDisk="true" /> 注入ecache @Autowired private UserCache userCache;
這樣在程序中就可以通過
this.userCache.getUserFromCache(username);獲取到緩存中的用戶對象
用戶對象為UserDetails類型
總結
以上所述是小編給大家介紹的spring security國際化及UserCache的配置和使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。