Spring Security 错误信息 国际化
2019-05-31 本文已影响0人
破地瓜
使用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-***jar
的org.springframework.security
路径下
如何重新配置呢,解决方案查看官方文档
解决方案
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:org/springframework/security/messages"/>
</bean>
将spring-secruity-core-***jar
的org.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的子类下,否则会报错
再次登录,提示坏的凭证
文件内容自行替换