spring boot中实现security错误信息本地化

一.修改messages.properties

找源码中的messages.properties,复制一份放在classpath下,修改你要修改的内容 

AbstractUserDetailsAuthenticationProvider.badCredentials=用户名或者密码错误

二.配置messages.properties路径

在启动类Application中添加

我的messages.properties就在Resources目录下.

不能在WebSecurityConfigurerAdapter的配置类中添加,会报错

java.lang.IllegalStateException: No ServletContext set

不知道为什么,这个@Bean不是只是个全局的Bean定义吗?

路过的大佬如果知道原因,烦请指导一下.

@Bean
	public MessageSource messageSource() {
		ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.addBasenames("classpath:messages");
		return messageSource;
	}

 

三.继承AbstractUserDetailsAuthenticationProvider

因为用户名不存在和密码错误都是AbstractUserDetailsAuthenticationProvider.badCredentials

在authenticate中验证用户名是否存在

在additionalAuthenticationChecks验证密码

具体实现看源码,基本只需要改成自己的message code就好了.

原文地址:https://www.cnblogs.com/ptqueen/p/8418902.html