spring security国际化资源文件修改方式

2,122 阅读1分钟

测试小哥拿刀提bug,吓尿开发小哥,bug如图

image.png

分析问题原因:切换了时区导致请求头Accept-Language发生变化

444.jpg

根据spring官网文档说明,对本地化配置有两种方式

1620962258(1).jpg

spring过滤器源代码跟踪Accept-Language设置位置

image.png

解决方案

一、xml格式

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

二、配置类格式

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
 
import java.util.Locale;
@Configuration
public class SecurityMessageLocal {
 
    @Bean
    public MessageSource messageSource() {
        Locale.setDefault(Locale.CHINA);
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
//        messageSource.addBasenames("classpath:org/springframework/security/messages_zh_CN");
        messageSource.addBasenames("classpath:security/messages_zh_CN");
 
        return messageSource;
    }
}