Java 未调用UserDetails.equals()

Java 未调用UserDetails.equals(),java,spring,spring-security,Java,Spring,Spring Security,我已经看到,如果我想在spring security中激活并发控制,我必须添加: <security:session-management> <security:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" /> </security:session-management> 到web.xml 我已经做到了。在UserDetails的实现中,我还覆盖了h

我已经看到,如果我想在spring security中激活并发控制,我必须添加:

 <security:session-management>
     <security:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
 </security:session-management>
web.xml

我已经做到了。在UserDetails的实现中,我还覆盖了
hashCode
equals
,但我仍然可以登录两次。我发现,在登录过程中,调用了
hashCode()
,但从未调用过
equals()

我不知道它应该如何工作,或者什么时候应该调用
equals()
,有人能帮我吗

编辑:


它可能真的起作用了。当我最后一次尝试时,我发现第二次登录是允许的,属于第一次登录的会话被破坏


试试这个,看看它是否有效。如果这不是您想要的行为,那么您可能必须查看文档,看看它是否可以通过配置进行控制。

我发现,当您有身份验证筛选器时,您需要声明ConcurrentSessionControl策略,例如:

<bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
<constructor-arg name="sessionRegistry" ref="sessionRegistry" />
<property name="maximumSessions" value="1" />
<property name="exceptionIfMaximumExceeded" value="true"
</bean>


你的
hashCode
看起来怎么样?我把它添加到了帖子中。你知道即使对象不是,hash代码也可以是相等的,不是吗?@zeroflagL这不是问题所在。没有人叫Equals。如果hashcode相等,那将是另一个问题,但这并不相关,因为似乎没有人比较它们。此外,应该发生的是哈希代码不相等,这就是为什么它允许同一用户的两个会话。是的,我知道这是一种可能性,但应该使用“如果最大值超过=真,则错误”来修复。无论如何,bth会话同时处于活动状态。不过还是谢谢你。我会继续努力的。
@Override
public boolean equals(Object otherUser) {
   if (otherUser.hashCode() == hashCode())
       return true;

   return false;
}

@Override
public int hashCode() {

    return loginUsername.hashCode() ;
}
<bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
<constructor-arg name="sessionRegistry" ref="sessionRegistry" />
<property name="maximumSessions" value="1" />
<property name="exceptionIfMaximumExceeded" value="true"
</bean>
<security:custom-filter position="CONCURRENT_SESSION_FILTER"
            ref="concurrencyFilter" />

<security:session-management
            session-authentication-strategy-ref="sas" />