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