0

我的网络应用程序中有一个弹簧安全设置。我想用我的自定义消息替换一些 spring security 消息,即

而不是Bad Credentials我想要AbstractUserDetailsAuthenticationProvider.badCredentials有价值invalid username or password, please try again

这是我的弹簧设置:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages/messages"/>
<!-- Tried this as well <property name="basename" value="/WEB-INF/messages/messages.properties"/> -->
<property name="cacheSeconds" value="0" />
<property name="defaultEncoding" value="UTF-8" />
</bean>

我已经在被WEB-INF调用的messages. 在这个文件夹中有一个名为messages.properties. 这个文件里面有一行:

AbstractUserDetailsAuthenticationProvider.badCredentials=invalid username or password, please try again

我在这里做错了什么?

更新 :

这个 servlet-context 在 web xml 中定义:

<!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

问题解决了,将 messageSource bean 定义移动到另一个上下文。

4

1 回答 1

1

一切看起来都不错。尝试使用 spring 消息标签获取消息,以检查问题是出在您的配置上还是与安全消息有关:

<spring:message code="AbstractUserDetailsAuthenticationProvider.badCredentials" />

如果这确实有效,那么问题不在于您的配置(对我来说看起来不错)。

无论如何,尝试将您的消息文件放在类路径(源文件夹)中,并且:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages/messages"/>
    <property name="cacheSeconds" value="0" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

此外,检查 bean 是否在 Spring 知道的应用程序上下文文件中声明。

于 2012-07-04T12:41:19.173 回答