美好的一天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
但由于某些原因,当我更改密钥的值时,它没有被反映出来。
有相同情况的人吗?提前谢谢!
答案 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
希望有人觉得有帮助