此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Security 6.5.3! |
本地化
如果您需要支持其他语言环境,则此部分包含您需要了解的所有内容。
所有异常消息都可以本地化,包括与身份验证失败和访问被拒绝(授权失败)相关的消息。专注于开发人员或系统部署程序的异常和日志消息(包括不正确的属性,接口契约冲突,使用不正确的构造函数,启动时间验证,调试级日志记录)没有本地化,而是在Spring Security的代码中用英语硬编码。
在spring-security-core-xx.jar
你会发现一个org.springframework.security
包,该包又包含一个messages.properties
文件,以及一些常用语言的本地化版本。这应该由您的ApplicationContext
,因为 Spring Security 类实现了 Spring 的MessageSourceAware
接口,并期望消息解析器在应用程序上下文启动时注入依赖项。通常,您需要做的就是在应用程序上下文中注册一个 bean 来引用消息。一个示例如下所示:
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:org/springframework/security/messages"/>
</bean>
这messages.properties
根据标准资源包命名,代表 Spring Security 消息支持的默认语言。此默认文件为英文。
如果您想自定义messages.properties
文件,或支持其他语言,则应复制该文件,相应地重命名它,并在上面的 bean 定义中注册它。该文件中没有大量的消息键,因此本地化不应被视为一项重大举措。如果您确实执行了此文件的本地化,请考虑通过记录 JIRA 任务并附加您适当命名的本地化版本来与社区分享您的工作messages.properties
.
Spring Security 依赖于 Spring 的本地化支持,以便实际查找适当的消息。为了使其正常工作,您必须确保来自传入请求的语言环境存储在 Spring 的org.springframework.context.i18n.LocaleContextHolder
. Spring MVC 的DispatcherServlet
会自动为您的应用程序执行此作,但由于在此之前调用了 Spring Security 的过滤器,因此LocaleContextHolder
需要设置为包含正确的Locale
在调用过滤器之前。您可以自己在过滤器中执行此作(必须在 Spring Security 过滤器之前web.xml
)或您可以使用 Spring 的RequestContextFilter
. 有关在 Spring 中使用本地化的更多详细信息,请参阅 Spring 框架文档。
“contacts”示例应用程序设置为使用本地化消息。