无法覆盖spring安全错误消息

时间:2014-10-27 11:15:10

标签: spring-mvc spring-security

美好的一天SO人!

我对自定义弹簧安全错误消息有疑问。我已经对如何执行此操作进行了一些搜索,并将下面的代码段放在我的root-context.xml

    <!-- override spring security messages -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">  
        <property name="basenames">  
            <list>
                <value>mymessages</value>
            </list>
        </property>
    </bean>

并在mymessages.properties文件夹中创建名为WEB-INF\classes\的属性文件。

我不知道这里是否有人遇到过同样的问题,但我还是给了他一个机会。你看我能够覆盖&#34; Bad Credentials&#34;消息。

AbstractUserDetailsAuthenticationProvider.badCredentials=Invalid username or password.

现在,我想覆盖使用密钥

的最大允许会话的消息
ConcurrentSessionControlStrategy.exceededAllowed=Maximum sessions of {0} for this principal exceeded

但由于某些原因,当我更改密钥的值时,它没有被反映出来。

有相同情况的人吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题,我查看了弹簧代码,看看他们使用了什么消息,这是不同的:

正如你所说,消息说:

ConcurrentSessionControlStrategy.exceededAllowed

但是,在代码ConcurrentSessionControlStrategy中,他们使用的消息与messages.properties中的消息不同

protected void allowableSessionsExceeded(List<SessionInformation> sessions,
        int allowableSessions, SessionRegistry registry)
        throws SessionAuthenticationException {
    if (exceptionIfMaximumExceeded || (sessions == null)) {
        throw new SessionAuthenticationException(messages.getMessage(
                "ConcurrentSessionControlAuthenticationStrategy.exceededAllowed",
                new Object[] { Integer.valueOf(allowableSessions) },
                "Maximum sessions of {0} for this principal exceeded"));
    }

总而言之,使用以下方法覆盖:

ConcurrentSessionControlAuthenticationStrategy.exceededAllowed

而不是:

ConcurrentSessionControlStrategy.exceededAllowed

希望有人觉得有帮助