Spring Security 错误信息 国际化

使用Spring Security登陆失败时,提示Bad Credentials

提示信息在什么位置?如何修改?
跟踪代码发现,代码调用了SpringSecurityMessageSource.getAccessor()方法,代码如下

package org.springframework.security.core;

import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.context.support.ResourceBundleMessageSource;

public class SpringSecurityMessageSource extends ResourceBundleMessageSource {
    public SpringSecurityMessageSource() {
        this.setBasename("org.springframework.security.messages");
    }

    public static MessageSourceAccessor getAccessor() {
        return new MessageSourceAccessor(new SpringSecurityMessageSource());
    }
}

代码中写死了org.springframework.security.messages的国际化配置,国际化配置在spring-secruity-core-***jarorg.springframework.security路径下

如何重新配置呢,解决方案查看官方文档

解决方案


      

spring-secruity-core-***jarorg.springframework.security路径下的messages_zh_CN.properties复制到项目的/resources下,并注入Bean

@Configuration
public class SecurityConfiguration {
   @Bean
   public ReloadableResourceBundleMessageSource messageSource() {
       ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
       source.setBasename("classpath:messages");
       return source;
}

注:此@Bean不能写在WebSecurityConfigurerAdapter的子类下,否则会报错

再次登录,提示坏的凭证 文件内容自行替换

你可能感兴趣的:(Spring Security 错误信息 国际化)