服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - spring security国际化及UserCache的配置和使用

spring security国际化及UserCache的配置和使用

2021-01-08 12:04动力节点 Java教程

这篇文章主要介绍下国际化的配置及UserCache的配置及使用教程,感兴趣的朋友参考下实现代码吧

国际化配置

?
1
2
3
4
5
6
<!-- 定义上下文返回的消息的国际化 -->
<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下可以找到国际化文件,可以直接拿来,这个类也可以用在项目中

?
1
2
@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方法

?
1
2
getMessage("UserDetails.isLocked",null,null) //用户已被锁定
getMessage("UserDetails.isLocked",new Object[]{“admin”},null) //用户admin不存在

UserCache配置,通过ecahe实现

?
1
2
3
4
5
6
7
8
9
10
11
<!-- 启用用户的缓存功能 -->
<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

?
1
2
3
4
5
6
7
8
9
10
11
<cache
  name="userCache"
  maxElementsInMemory="100"
  eternal="false"
  timeToIdleSeconds="600"
  timeToLiveSeconds="3600"
  overflowToDisk="true"
/>
注入ecache
@Autowired
private UserCache userCache;

这样在程序中就可以通过

?
1
this.userCache.getUserFromCache(username);获取到缓存中的用户对象

用户对象为UserDetails类型

总结

以上所述是小编给大家介绍的spring security国际化及UserCache的配置和使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:http://blog.sina.com.cn/s/blog_9c6852670102wwi1.html

延伸 · 阅读

精彩推荐