码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Security异常信息本地化

时间:2020-12-03 11:53:19      阅读:6      评论:0      收藏:0      [点我收藏+]

标签:常用   属性注入   mamicode   --   mes   message   开发者   自己的   中文   

背景

技术图片
Spring Security 支持将展现给终端用户看的异常信息本地化,这些信息包括认证失败、访问被拒绝等。而对于展现给开发者看的异常信息和日志信息(如配置错误)则是不能够进行本地化的,它们是以英文硬编码在 Spring Security 的代码中的。在 Spring-Security-core-xxx.jar 包的 org.springframework.security 包下拥有一个以英文异常信息为基础的 messages.properties 文件,以及其它一些常用语言的异常信息对应的文件,如 messages_zh_CN.properties 文件。那么对于用户而言所需要做的就是在自己的 ApplicationContext 中定义如下这样一个 bean。

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:org/springframework/security/messages" /> </bean>

Spring Security异常信息本地化原理

异常消息列表

技术图片

获取消息

protected MessageSourceAccessor messages = SpringSecurityMessageSource
.getAccessor();
技术图片
这是spring security默认的MessageResource,如果容器中指定了则不使用这个MessageResource。
自定义本地化描述
如果要自己定制 messages.properties 文件,或者需要新增本地化支持文件,则可以 copy Spring Security 提供的默认 messages.properties 文件,将其中的内容进行修改后再注入到上述 bean 中。比如我要定制一些中文的提示信息,那么我可以在 copy 一个 messages.properties 文件到类路径的 “com/xxx” 下,然后将其重命名为 messages_zh_CN.properties,并修改其中的提示信息。然后通过 basenames 属性注入到上述 bean 中,如:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <array> <!-- 将自定义的放在 Spring Security 内置的之前 --> <value>classpath:com/xxx/messages</value> <value>classpath:org/springframework/security/messages</value> </array> </property> </bean>

有一点需要注意的是将自定义的 messages.properties 文件路径定义在 Spring Security 内置的 message.properties 路径定义之前。

总结

Spring Security支持异常信息的国际化,最终用户希望看到这些信息。如果你的应用被设计成给讲英语的用户的,你不需要做任何事情, 因为默认情况下Spring Security的信息都是引用的。

Spring Security异常信息本地化

标签:常用   属性注入   mamicode   --   mes   message   开发者   自己的   中文   

原文地址:https://blog.51cto.com/15015181/2556216

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!